linux 多客户端连接问题???
hem99 2008-04-22 03:49:25 我用linux做客户端,win做服务器,TCP/IP协议。
连接1个客户时可以通讯,当连接上第2个客户时,第一个客户就不能通讯,而第2个可以,是什么问题呀?
好像服务器端没问题,用同是win的客户端就可以。
客户端如下:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#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 <recvbytes;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");
}
请高手帮看看,谢谢!