私は単純なソケット プログラミング アプリケーションを C で作成しました。このコードはループバック アドレスで動作しています。また、このプログラムは、2 台のコンピューター (1つのサーバーと 1 つのクライアント) が同じネットワークにある場合にうまく機能します (私は大学の LAN ネットワークで試しました)。クライアントの「接続」メソッドでエラーが表示されます。クライアントがサーバーに接続できません。助けてください。ほとんどすべてを試しましたが、何も役に立たなかったので、助けてください。できるだけ早く助けてください。今月。ありがとうございます!
コードは次のとおりです。Client.cの場合
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
int chat();
int main(){
chat();
}
int chat()
{
int clientid, n = 0;
char msgsend[512], msgrecv[512];
struct sockaddr_in client;
memset(msgrecv, '0', sizeof(msgrecv));
clientid = socket(AF_INET, SOCK_STREAM, 0);
if(clientid == -1){
printf("Could not create a socket!\n");
return -1;
}
client.sin_family = AF_INET;
client.sin_addr.s_addr = /*INADDR_ANY;*/inet_addr("10.200.56.187");
client.sin_port = htons(5001);
printf(" Trying to connect...");
if(connect(clientid, (struct sockaddr*)&client, sizeof(client)) < 0){
printf("Error:Connection failed\n");
return -1;
}
printf("Connected");
while(1){
printf("please enter your reply\n");
gets(msgsend);
send(clientid, msgsend, sizeof(msgsend) - 1, 0);
n = recv(clientid, msgrecv, sizeof(msgrecv) - 1, 0);
if(n < 0){
printf("Read error\n");
}
printf("\n");
printf("server says:");
msgrecv[n] = 0;
fputs(msgrecv, stdout);
printf("\n");
}
return 0;
}
And here is the code:
for server.c
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include<fcntl.h>
int chat();
int main(){
chat();
}
int chat(){
int serverid, clientid, n = 0, len;
char msgsend[512], msgrecv[512];
struct sockaddr_in server,client;
serverid = socket(AF_INET, SOCK_STREAM, 0);
memset(&server, '0', sizeof(server));
memset(msgrecv, '0', sizeof(msgrecv));
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(5001);
bind(serverid, (struct sockaddr*)&server, sizeof(server));
if( listen(serverid, 10) == -1){
printf("ERROR");
return -1;
}
len = sizeof(client);
clientid = accept(serverid, (struct sockaddr*)&client, &len);
while(1){
n = recv(clientid, msgrecv, sizeof(msgrecv) - 1, 0);
if(n < 0){
printf("Error while reading...\n");
return -1;
}
printf("client says:");
msgrecv[n] = 0;
fputs(msgrecv, stdout);
printf("\n");
printf("enter your reply\n");
gets(msgsend);
send(clientid, msgsend, sizeof(msgsend) - 1, 0);
printf("\n");
}
return 0;
}