请LINUX的高手 帮我运行下这段socket的程序!

来源:百度知道 编辑:UC知道 时间:2024/05/31 06:24:48
SERVER端的代码:
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<unistd.h>
#include<netinet/in.h>

#define SERVPORT 3333
#define BACKLOG 10
#define MAX_CONNECTED_NO 10
#define MAXDATASIZE 5

int main()
{
struct sockaddr_in server_sockaddr,client_sockaddr;
int sin_size,recvbytes;
int sockfd,client_fd;
char buf[MAXDATASIZE];
//建立socket连接
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1) {
perror ("socket");
exit(1);
}
printf("socket success!\nsockfd=%d\n",sockfd);

//设置sockaddr_in 结构体相关参数
server_sockaddr.sin_family=AF_INET;
server_sockaddr.sin_port=htons(SERVPORT);
server_sockaddr.sin_addr.s_addr=INADDR_ANY;
bzero(&(server_sockaddr.sin_zero),8);

//绑定bind<

问题出在accept的第三个参数

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

accept的第三个参数必须为正数,把它初始化下就可以了,你的sin_size仅仅定义没有赋值,他怎么知道长度多少

Linux论坛去问