当前位置: 技术问答>linux和unix
linux下SOCKET数据接收不到问题
来源: 互联网 发布时间:2016-12-06
本文导语: 服务端和客户端程序在PC上可以运行,但是把服务端程序放到开发板上就不行了。开发板IP:192.168.1.6, pc:192.168.1.10。 服务端程序: #include #include #include #include #include #include #include #include #define SERVERPORT 8080 ...
服务端和客户端程序在PC上可以运行,但是把服务端程序放到开发板上就不行了。开发板IP:192.168.1.6,
pc:192.168.1.10。
服务端程序:
#include
#include
#include
#include
#include
#include
#include
#include
#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 failn");
exit(1);
}
if(listen(sockfd,MAXCONNET)==-1)
{
perror("listen failn");
exit(1);
}
while(1)
{
sin_size=sizeof(struct sockaddr_in);
if((client_fd=accept(sockfd,(struct sockaddr*)&remote_addr,&sin_size))==-1)
{
perror("accept failn");
continue;
}
printf("accept:%sn",inet_ntoa(remote_addr.sin_addr));
if(!fork())
{
if(send(client_fd,"连接上了n",26,0)==-1)
{
perror("send failn");
close(client_fd);
exit(0);
}
close(client_fd);
}
}
}
交叉编译之后在开发板运行./server 没反应。
pc:192.168.1.10。
服务端程序:
#include
#include
#include
#include
#include
#include
#include
#include
#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 failn");
exit(1);
}
if(listen(sockfd,MAXCONNET)==-1)
{
perror("listen failn");
exit(1);
}
while(1)
{
sin_size=sizeof(struct sockaddr_in);
if((client_fd=accept(sockfd,(struct sockaddr*)&remote_addr,&sin_size))==-1)
{
perror("accept failn");
continue;
}
printf("accept:%sn",inet_ntoa(remote_addr.sin_addr));
if(!fork())
{
if(send(client_fd,"连接上了n",26,0)==-1)
{
perror("send failn");
close(client_fd);
exit(0);
}
close(client_fd);
}
}
}
交叉编译之后在开发板运行./server 没反应。
|
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?
serv_addr.sin_port=htons(SERVERPORT);
serv_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(serv_addr.sin_zero),8);
为啥客户端代码里面,不填服务器地址呢......INADDR_ANY, connect who?