- 论坛徽章:
- 0
|
错误信息:
Program received signal SIGPIPE, Broken pipe.
程序开始一直运行,一传过来socket就中断,出现上边的错误,为什么呀?帮帮忙。
现在做的东西是windows的客户端用vb做的传送socket的程序,linux做的是接受socket并返回信息。
服务器端代码如下:
/*
* test
*/
#include <stdio.h>;
#include <stdlib.h>;
#include <unistd.h>;
#include <error.h>;
#include <string.h>;
#include <sys/types.h>;
#include <sys/socket.h>;
#include <netinet/in.h>;
const int port = 6789;
int main (int argc,char **argv)
{
int socket_descriptor,bind_socket,listen_socket;
struct sockaddr_in address;
struct sockaddr_in adr_clnt;
const int backnum=100;
int len_inet;
int c;//client socket
int z;
int n;
socket_descriptor = socket(AF_INET, SOCK_STREAM, 0);
if (socket_descriptor == -1)
{
printf("Opening socket" ;
}
memset(&address, 0, sizeof(address));
address.sin_family = AF_INET;
address.sin_addr.s_addr = htonl(INADDR_ANY);
address.sin_port = htons(port);
bind_socket = bind(socket_descriptor,(struct sockaddr *)&address,sizeof(address));
if (bind_socket == -1){
printf("bind error!" ;
}
listen_socket = listen(socket_descriptor,backnum);
if(listen_socket==-1){
printf("listen error!" ;
}else{
printf("listening" ;
}
for(; {
/*
*Waiting for a connection
*/
len_inet = sizeof adr_clnt ;
printf("client accept success!" ;
c=accept(socket_descriptor,(struct sockaddr *)&adr_clnt,&len_inet);
if (c==-1){
printf("client accept error!" ;
}else{
printf("client accept success!" ;
}
/*
*Write result back to client
*/
z = sendto(socket_descriptor, "test from broadcast", sizeof("test from broadcast" , 0,
(struct sockaddr *)&adr_clnt, sizeof(adr_clnt));
if (z==-1){
printf("write error!" ;
}else{
printf("success!!!!");
}
close(c);
printf("success!!!!");
}
printf("success!!!!");
return 0;
}
谢谢大家,帮帮忙! |
|