linux网络编程之tcp模板
来源:互联网 发布:linux磁盘空间扩容 编辑:程序博客网 时间:2024/06/07 18:18
/* client */#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/ip.h> int main(int argc, char *argv[]){ int portnumber = 0; int sockfd = -1; struct hostent *host; struct sockaddr_in serveraddr; char buf[1024] = {0}; if (3 != argc || 0 > (portnumber = atoi(argv[2]))){ printf("Usage:%s hostname portnumber\n", argv[0]); exit(1); } if (NULL == (host = gethostbyname(argv[1]))){ perror("gethostname error"); exit(1); } if (-1 == (sockfd = socket(AF_INET, SOCK_STREAM, 0))){ perror("socket error"); exit(1); } bzero(&serveraddr, sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(portnumber); serveraddr.sin_addr = *((struct in_addr *)host->h_addr); if (-1 == connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(struct sockaddr))){ perror("connect error:"); exit(1); } if (-1 == read(sockfd, buf, 1024)){ perror("recv error:"); } printf("data arrived:%s\n", buf); close(sockfd); return 0;}
/* server */#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/ip.h> int main( int argc, char *argv[]){ int portnumber = 0; int sockfd = -1; int clientfd = -1; int addrlen = 0; struct sockaddr_in serveraddr, clientaddr; if (2 != argc || 0 > (portnumber = atoi(argv[1]))){ printf("Usage: %s port \n", argv[0]); exit(1); } sockfd = socket(AF_INET, SOCK_STREAM, 0); if (-1 == sockfd){ perror("socket error:"); exit(1); } bzero(&serveraddr, sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(portnumber); serveraddr.sin_addr.s_addr = INADDR_ANY; if (-1 == bind(sockfd, (struct sockaddr *)(&serveraddr), sizeof(serveraddr))){ perror("bind error:"); exit (1); } if (-1 == listen(sockfd, 4)){ perror("listen error:"); exit(1); } while (1){ addrlen = sizeof(struct sockaddr_in); if (-1 == (clientfd = accept(sockfd, (struct sockaddr*)&clientaddr, &addrlen))){ perror("accept error"); exit(1); } printf("connect from %s:%u ...\n", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port)); if (-1 == write(clientfd, "hello", strlen("hello"))){ perror("write error"); exit(1); } close(clientfd); } close(sockfd); return 0;}
原文:http://blog.chinaunix.net/uid-23069658-id-3273673.html
0 0
- linux网络编程之tcp模板
- linux网络编程之TCP编程----初级
- Linux网络编程之TCP编程
- linux网络编程之TCP编程
- Linux网络编程之tcp/ip编程
- Linux网络编程之TCP编程
- Linux网络编程之TCP通信
- Linux 网络编程之TCP(上)
- Linux网络编程之TCP状态转换
- Linux 网络编程之tcp/ip
- Linux网络编程之TCP协议
- Linux网络编程TCP之并发服务
- linux网络编程之socket(TCP)
- linux网络编程之TCP接口详解
- Linux-网络编程学习笔记之tcp
- linux网络编程之TCP定时器
- Linux网络编程之TCP套接字
- Linux编程网络之TCP通信
- Android:动画系统
- ASP.NET MVC中的统一化自定义异常处理
- iOS线程休眠及取消
- 5.Longest Palindromic Substring
- 第三周的顺序表的基本运算
- linux网络编程之tcp模板
- c++不接受模板分离式编译的原因及其解决方法
- lucene入门教程
- android 内存优化
- python的函数嵌套机制
- 单例实现方式
- hdu 2612 Find a way (BFS)
- Unity3D之游戏架构脚本该如何来写
- 第一篇。