柚子快报邀请码778899分享:tcp/ip TCP练习
#include
#define PORT 8888 #define IP "192.168.124.18"
int main(int argc, const char *argv[]) { //创建流式套接字文件 int sfd = socket(AF_INET,SOCK_STREAM,0); if(sfd < 0) { perror("socket"); return -1; } printf("socket seccuss sfd = %d __%d__\n",sfd,__LINE__); int reuse = 1; if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))<0) { perror("setsockopt"); return -1; } //AF_INET struct sockaddr_in sin; sin.sin_family = AF_INET; sin.sin_port = htons(PORT); sin.sin_addr.s_addr = inet_addr(IP);
//绑定服务器自身的地址信息 if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin)) < 0) { perror("bind"); return -1; } printf("bind seccuss __%d__\n",__LINE__); //将套接字设置为被动监听状态 if(listen(sfd,128) < 0) { perror("listen"); return -1; } printf("listen seccuss __%d__\n",__LINE__);
struct sockaddr_in cin; socklen_t addrlen = sizeof(cin); //获取链接成功的套接字 int newfd = accept(sfd,(struct sockaddr*)&cin,&addrlen); if(newfd < 0) { perror("accept"); return -1; } printf("[%s:%d] 客户端连接成功 newfd=%d __%d__\n",\ inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),newfd,__LINE__);
char buf[128]; ssize_t res; while(1) { bzero(buf,sizeof(buf)); res = recv(newfd,buf,sizeof(buf),0); if(res < 0) { perror("recv"); return -1; } else if(0 == res) { printf("[%s:%d] 客户端下线 __%d__\n",\ inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),__LINE__); break; } printf("[%s:%d] 客户端连接成功 newfd=%d __%d__\n",\ inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),newfd,__LINE__);
} close(newfd); close(sfd);
return 0; }
柚子快报邀请码778899分享:tcp/ip TCP练习
参考链接
发表评论