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");
}

请高手帮看看,谢谢!


...全文
69 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
支持搂主,收藏

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧