linux下SOCKET数据接收不到问题

daisyzone 2011-06-16 10:50:31
服务端和客户端程序在PC上可以运行,但是把服务端程序放到开发板上就不行了。开发板IP:192.168.1.6,
pc:192.168.1.10。
服务端程序:
#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#include<errno.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<sys/socket.h>

#include<sys/wait.h>



#define SERVERPORT 8080

#define MAXCONNET 10



int main()

{

struct sockaddr_in my_addr;

struct sockaddr_in remote_addr;

int sin_size;

int sockfd,client_fd;

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

{

perror("socket 创建失败\n");

}

my_addr.sin_family=AF_INET;

my_addr.sin_port=htons(SERVERPORT);

my_addr.sin_addr.s_addr=INADDR_ANY;

bzero(&(my_addr.sin_zero),8);

if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1)

{

perror("bind fail\n");

exit(1);

}

if(listen(sockfd,MAXCONNET)==-1)

{

perror("listen fail\n");

exit(1);

}

while(1)

{

sin_size=sizeof(struct sockaddr_in);

if((client_fd=accept(sockfd,(struct sockaddr*)&remote_addr,&sin_size))==-1)

{

perror("accept fail\n");

continue;

}

printf("accept:%s\n",inet_ntoa(remote_addr.sin_addr));

if(!fork())

{

if(send(client_fd,"连接上了\n",26,0)==-1)

{

perror("send fail\n");

close(client_fd);

exit(0);

}

close(client_fd);

}
}

}

交叉编译之后在开发板运行./server 没反应。

...全文
303 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
challenge99 2011-06-16
  • 打赏
  • 举报
回复
serv_addr.sin_family=AF_INET;

serv_addr.sin_port=htons(SERVERPORT);

serv_addr.sin_addr.s_addr=INADDR_ANY;

bzero(&(serv_addr.sin_zero),8);


为啥客户端代码里面,不填服务器地址呢......INADDR_ANY, connect who?
daisyzone 2011-06-16
  • 打赏
  • 举报
回复
客户端程序:
#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#include<errno.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<sys/socket.h>

#include<sys/wait.h>



#define SERVERPORT 8080

#define MAXDATA 100



int main(int argc,char *argv [])

{

int sockfd,recebytes;

char buf[MAXDATA];

struct hostent *host;

struct sockaddr_in serv_addr;

if(argc<2)

{

fprintf(stderr,"enter host mane\n");

exit(1);

}

if((host=gethostbyname(argv[1]))==NULL)

{

perror("get host name fail\n");

exit(1);

}

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

{

perror("socket 创建失败\n");

}



serv_addr.sin_family=AF_INET;

serv_addr.sin_port=htons(SERVERPORT);

serv_addr.sin_addr.s_addr=INADDR_ANY;

bzero(&(serv_addr.sin_zero),8);



if(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr))==-1)

{

perror("connect fail\n");

exit(1);

}

if((recebytes=recv(sockfd,buf,MAXDATA,0))==-1)

{

perror("connect fail\n");

exit(1);

}

buf[recebytes]='\0';

printf("receve:%s",buf);

close(sockfd);

}

运行./client 192.168.6
无反应
daisyzone 2011-06-16
  • 打赏
  • 举报
回复
谢谢!散分!

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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