基于Tcp协议的socket例子 linux c语言
来源:互联网 发布:mysql 降序排列 编辑:程序博客网 时间:2024/05/22 11:36
基于Tcp协议的socket例子
服务端:
//// Created by liyihang on 17-10-12.//#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/socket.h>#include <sys/un.h>#include <sys/types.h>#include <unistd.h>#include <sys/ioctl.h>#include <netinet/in.h>#include <arpa/inet.h>#define UDS_PATH "uds_test"#define SERVER_IP "10.199.5.23"#define SERVER_PORT 8001int main(void){ int server_sockfd;//服务端套接字 int client_sockfd;//客户端套接字 char welcome_info[100]="欢迎你链接服务器"; int len; struct sockaddr_in my_addr;//服务端网络套接字结构体 struct sockaddr_in remote_addr;//客户端网络套接字结构体 int sin_size; char buf[100]; memset(&my_addr, 0, sizeof(my_addr));//创建内存 my_addr.sin_family=AF_INET;//设置为ip通信 my_addr.sin_addr.s_addr= INADDR_ANY;//服务端地址 my_addr.sin_port = htons(SERVER_PORT);//监听端口 //创建服务器套接字 if ( (server_sockfd = socket(PF_INET, SOCK_STREAM, 0))<0 ){ perror("socket err"); return -1; } //绑定套接字到网络地址上 if (bind(server_sockfd, (const struct sockaddr *) &my_addr, sizeof(struct sockaddr))<0){ perror("bind err"); return -1; } printf("start listen\n"); //监听链接 设置链接数量 listen(server_sockfd, 5); sin_size= sizeof(struct sockaddr_in); printf("start accept\n"); //等待客户端请求链接送达 if ((client_sockfd=accept(server_sockfd, (struct sockaddr *) &remote_addr, &sin_size)) < 0){ perror("accpt err"); return -1; } printf("accept client :%s\n", inet_ntoa(remote_addr.sin_addr)); len = send(client_sockfd, welcome_info, 100, 0); while ((len= (int) recv(client_sockfd, buf, 100, 0)) > 0){ printf("buf content==%s\n", buf); if (send(client_sockfd, buf, len, 0)<0){ printf("send err\n"); return -1; } } printf("get content end\n"); close(client_sockfd); close(server_sockfd); return 0;}
客户端:
//// Created by liyihang on 17-10-16.//#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/ioctl.h>#include <string.h>#include <unistd.h>#define SERVER_PORT 8001int main(int argv, char *argc[]){ int clinet_sockfd; int len; struct sockaddr_in remote_addr;//服务器网络地址结构体 char buf[100]; memset(&remote_addr, 0, sizeof(remote_addr)); remote_addr.sin_family=AF_INET; remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); remote_addr.sin_port=htons(SERVER_PORT); if ((clinet_sockfd=socket(PF_INET, SOCK_STREAM, 0))<0){ perror("socket\n"); return -1; } //客户端链接服务端 if (connect(clinet_sockfd, (const struct sockaddr *) &remote_addr, sizeof(struct sockaddr)) < 0){ printf("connect err"); return -1; } printf("connect server\n"); len=recv(clinet_sockfd, buf, 100,0); printf("server content:%s\n", buf); len = send(clinet_sockfd, "hello i m client", strlen(buf), 0); len = recv(clinet_sockfd, buf, 100, 0); printf("agin server content:%s\n", buf); close(clinet_sockfd); return 0;}
首先运行服务端,然后运行客户端.
阅读全文
0 0
- 基于Tcp协议的socket例子 linux c语言
- Socket tcp/ip 例子 C语言 LINUX
- C语言编写基于TCP和UDP协议的Socket通信程序示例
- Linux C语言Socket编程例子(TCP和UDP)
- 基于TCP协议的Socket
- Windows/Linux C语言的Socket编程例子(TCP和UDP)
- C语言的Socket编程例子(TCP和UDP)
- C语言的Socket编程例子(TCP和UDP)
- C语言的Socket编程例子(TCP和UDP)
- C语言的Socket编程例子(TCP和UDP)
- C语言的Socket编程例子(TCP和UDP)
- C语言的Socket编程例子(TCP和UDP)
- linux下基于TCP协议的socket通信
- linux下C语言编程日志(1):基于TCP协议的服务器/客户端程序
- 基于TCP协议的socket编程实例
- 基于TCP协议的socket服务器
- 基于TCP协议的socket编程实例
- 基于TCP/UDP协议的Socket流程
- 如何开启深度学习之旅
- 大数据分析:王者荣耀英雄背景下的分词报告
- iOS11解决导航栏影藏返回文字的方法
- mysql5.7.17日志时间戳(log_timestmaps)与系统时间不一致问题以及日志报Got an error reading communication packets情况分析
- linux 下打包和解压命令
- 基于Tcp协议的socket例子 linux c语言
- Md5
- Tag,Layer跟SortingLayer
- txt文件的创建与读写
- [spark] TaskScheduler 任务提交与调度源码解析
- fillna函数
- Jackson json 处理全大写或不规范的JSON
- C++ 递归算法
- SQLScount插件破解激活