日期:2014-05-16  浏览次数:20667 次

tcp例子程序,求教。
各位好,我最近学习网络编程,刚写了一个tcp的server端程序,但是运行的时候并不往下走,不知道是什么原因,就是说并没有建立套接字socket。





/*
 ============================================================================
 Name        : tcp_server.c
 Author      : zhich
 Version     :
 Copyright   : Your copyright notice
 Description :
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define MAXDATASIZE 100


int main(int argc,char *argv[])
{
int connfd,listenfd;
int bytes;
char *msg;
struct sockaddr_in s;
struct sockaddr_in c;
socklen_t c_len;

if(argc!=3)
{
printf("Usage : <%s> <IP> <Port>\n",argv[0]);
exit(1);
}else{
printf("succeed");
}

//建立socket套接字
if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket:");
exit(1);
}else{
printf("create socket succeed");
}



memset(&s, 0, sizeof(struct sockaddr_in));
//设置端口信息
s.sin_family=AF_INET;
if(argv[2])
s.sin_port=htons(atoi(argv[2]));
if(argv[1])
s.sin_addr.s_addr=inet_addr(argv[1]);


//绑定服务器地址
if(bind(listenfd,(struct sockaddr *) &s,sizeof(s))==-1)
{
perror("bind:");
exit(1);
}else{
printf("bind succeed");
}


//监听
if(listen(listenfd,20)==-1)
{
perror("listen:");
exit(1);
}else {
printf("listen succeed");
}

c_len=sizeof(c);

//接受来自客户端的请求
if((connfd=accept(listenfd,(struct sockaddr *) &c,&c_len))==-1)
{
perror("accept:");
exit(1);
}else{
printf("accept succeed");
}


//接受数据
while(1)
{

if(bytes=recv(connfd,msg,MAXDATASIZE,0)==-1)
{
perror("recv:");
exit(1);
}

msg[bytes]='\0';
printf("receive data from client: %s",msg);

}

close(connfd);
close(listenfd);

return 0;
}