-2
実行後、クライアントにファイル名を入力しますが、サーバー側では印刷されません。すべてを試しました。助けてください。私はWindowsでbashを使用しています。私はちょうどクライアントからサーバーにファイル名を送信しています。サーバー側にクライアントが表示されます。メッセージは送信しません:Cソケット
これは私のいるclient.c
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<string.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
int i,size,connect_status,sd;
char sentmsg[100],recvmsg[100];
int sentlen,sent_status,recvlen,recvbytes;
struct sockaddr_in client,address;
sd = socket(AF_INET,SOCK_STREAM,0);
if(sd == -1)
{
perror("Socket Error : ");
return 0;
}
client.sin_family = AF_INET;
client.sin_port = htons(1543);
client.sin_addr.s_addr = INADDR_ANY;
for(i=0; i<8;i++)
{
client.sin_zero[i] = '\0';
}
connect_status = connect(sd,(struct sockaddr*)&client,sizeof(struct sockaddr));
if(connect_status == -1)
{
perror("Connect Error : ");
return 0;
}
printf("\nEnter the file name to be read : ");
scanf("%s",sentmsg);
sent_status = send(sd,sentmsg,100,0);
if(sent_status == -1)
{
perror("Sending Error : ");
return 0;
}
return 0;
}
ですこれは、私がクライアントからサーバにメッセージを送信するunabble午前私のserver.c
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<string.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
int main()
{
int i,newsd,sd,size,listen_status,bind_status,fd;
char sentmsg[100],recvmsg[100];
int sent_status,rec_status,sentlen,recvlen;
struct sockaddr_in server,address;
sd = socket(AF_INET,SOCK_STREAM,0);
if(sd == -1)
{
perror("Socket Error : ");
return 0;
}
server.sin_family = AF_INET;
server.sin_port = htons(1534);
server.sin_addr.s_addr = INADDR_ANY;
for(i=0 ; i<8 ; i++)
{
server.sin_zero[i] = '\0';
}
bind_status = bind(sd,(struct sockaddr*)&server,sizeof(struct sockaddr));
if(bind_status == -1)
{
perror("\nBind Error : ");
return 0;
}
listen_status = listen(sd,5);
if(listen_status == -1)
{
perror("\nListen Error : ");
return 0;
}
size = sizeof(struct sockaddr_in);
newsd = accept(sd,(struct sockaddr*)&address,&size);
if(newsd == -1)
{
perror("\nAccept Error : ");
return 0;
}
rec_status = recv(newsd,recvmsg,recvlen,0);
if(rec_status == -1)
{
perror("\nRecieve Error : ");
return 0;
}
recvmsg[rec_status] = '\0';
printf("\nClient : %s",recvmsg);
return 0;
}
です。助けてください
の接続は、サーバーが積極的に接続要求を拒否されたことを意味します。ポートはアクセス可能ですが、サーバープロセスがバインドされていません。 –
どうすればいいですか? –
私はCでのネットワーク通信について何も知らないが、それはよくあるエラーです。あなたはクライアント 'client.sin_port = htons(1543);で定義しましたが、サーバでは' server.sin_port = htons(1534);です。これは正しいと思われますか?またはそれらは同じポートであるべきですか? –