client.c和server.c 网络套接字socket编程热身程序
2016-06-27 19:55
330 查看
/*server.c*/ #include <stdio.h> #include <arpa/inet.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #define err_log(errlog) do{ perror(errlog); exit(1);}while(0) int main(int argc, const char *argv[]) { int sockfd; int acceptfd; struct sockaddr_in serveraddr, clientaddr; if(argc != 3) { fprintf(stderr,"Usage:%s serverip port.\n", argv[0]); return -1; } if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { err_log("fail to socket"); } serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr(argv[1]); serveraddr.sin_port = htons(atoi(argv[2])); if(bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0) { err_log("fail to bind"); } if(listen(sockfd, 15) < 0) { err_log("fail to listen"); } socklen_t addrlen = sizeof(struct sockaddr_in); acceptfd = accept(sockfd, (struct sockaddr *)&clientaddr, &addrlen); if(acceptfd < 0) { err_log("fail to acceptfd"); } printf("%s --> %d\n", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port)); close(acceptfd); close(sockfd); return 0; }
/*client*/ #include <stdio.h> #include <arpa/inet.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #define err_log(errlog) do{ perror(errlog); exit(1);}while(0) int main(int argc, const char *argv[]) { int sockfd; int acceptfd; struct sockaddr_in serveraddr, clientaddr; if(argc != 3) { fprintf(stderr,"Usage:%s serverip port.\n", argv[0]); return -1; } if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { err_log("fail to socket"); } serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr(argv[1]); serveraddr.sin_port = htons(atoi(argv[2])); if(connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0) { err_log("fail to connect"); } close(sockfd); return 0; }
相关文章推荐
- 使用C#开发HTTP服务器系列之实现Get和Post
- lenet-5网络解析
- tcp可靠传输、流量控制、拥塞控制的实现(一)
- 5种网络类型
- IPsec工作模式及其报文封装格式
- 网络是否连接的判断
- 网络编程笔记(2)---TCP 服务器与客户端编写流程
- teredo报文格式
- Caffe小玩意(1)-可视化网络结构
- OSI参考模型
- TCP/IP (01)
- 网络编程笔记(1)
- URL和URI 的区别
- chrome 上有用的插件
- 计算机网络基础知识笔记(二)
- 项目中使用监听网络的广播,没网提示view显示,有网提示view隐藏,在网络状态切换时,在布局下方出现空白条的问题。
- RHEL6.6安装gitolite
- tensorflow从0开始(7)——利用tensorflow进行开发的准备工作
- java 生成Http 头部date格式的string-RFC 1123 Date Representation in java
- OKHttp源码解析(三)