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;
}