|
我用linux做客户端,win做服务器,TCP/IP协议。
连接1个客户时可以通讯,当连接上第2个客户时,第一个客户就不能通讯,而第2个可以,是什么问题呀?
好像服务器端没问题,用同是win的客户端就可以。
客户端如下:
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 3333
#define MAXDATASIZE 100
main(int argc, char *argv[])
{
int sockfd, recvbytes;
unsigned char buf[MAXDATASIZE];
struct hostent *host;
struct sockaddr_in serv_addr;
unsigned char h1;
unsigned char *b=buf;
int i;
if((host=gethostbyname("192.168.0.5"))==NULL) {
herror("gethostbyname error");
exit(1);
}
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){
perror("socket socket error");
exit(1);
}
printf("\nsocket OK!\n\n");
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero),8);
while(connect(sockfd, (struct sockaddr *)&serv_addr,sizeof(struct sockaddr)) == -1) {
// perror("connect error");
// exit(1);
}
printf("connect OK!\n\n");
if(send(sockfd,"Connect OK!\n",20,0)==-1){
perror("Send error\n\n");
}
h1=0;
b=buf;
while(h1!=0x31){
if ((recvbytes=recv(sockfd, buf, MAXDATASIZE, 0)) ==-1) {
perror("recv error");
exit(1);
}
b=buf;
h1=buf[0];
//
for(i=0;i
printf("%x ",*b++);
}
printf("\n\n");
if(send(sockfd, "hello received !!!\n", 30,0)==-1){
perror("Send error\n\n");
}
printf("Send OK!\n\n");
}
close(sockfd);
printf("Break connect\n\n");
}
请高手帮看看,谢谢!
|
|