简单的stream socket例子
来源:互联网 发布:c语言中合法的关键字 编辑:程序博客网 时间:2024/05/17 22:25
服务器端:
#include<stdio.h>#include<netinet/in.h>#include<sys/socket.h>#include<stdlib.h>int main(){int sock_server, sock_client;struct sockaddr_in server_addr, client_addr;server_addr.sin_family = AF_INET;server_addr.sin_port = htons(6666);server_addr.sin_addr.s_addr = htonl(INADDR_ANY); //inet_addr("127.0.0.1")sock_server = socket(AF_INET, SOCK_STREAM, 0);if(sock_server < 0){printf("server socket create error!\n");exit(1);}int server_len = sizeof(server_addr);if(bind(sock_server, (struct sockaddr*)&server_addr, server_len) < 0){printf("bind server socket error\n");exit(0);}if(listen(sock_server, 5) < 0){printf("serever socket listen error\n");exit(1);}while(1){//printf("wait\n");int client_len = sizeof(client_addr);sock_client = accept(sock_server, (struct sockaddr*)&client_addr, (socklen_t*)&client_len);if(sock_client < 0){printf("Accept error\n");exit(1);}//printf("Accepted\n");int pid = fork();if(pid == 0){char buf[100];recv(sock_client, buf, 100, 0);printf("Message from client: %s\n", buf);send(sock_client, "Hello client", 100, 0);struct sockaddr_in server;server_len = sizeof(server);getsockname(sock_client, (struct sockaddr*)&server, (socklen_t*)&server_len);char local_addr[20];if(inet_ntop(AF_INET, (void*)&server.sin_addr, local_addr, sizeof(local_addr))){//printf("转换成功\n");printf("information: %s %d\n", local_addr, ntohs(server.sin_port));}elseprintf("地址转换失败\n");//printf("AAA\n");while(1) //不调用close(),导致tcp状态一直处于close_wait状态;close(sock_client);}}close(sock_server);return 0;}
客户端:
#include<stdio.h>#include<netinet/in.h>#include<unistd.h>#include<sys/socket.h>#include<stdlib.h>#include<string.h>int main(){int sock_server, sock_client;struct sockaddr_in server_addr, client_addr;server_addr.sin_family = AF_INET;server_addr.sin_port = htons(6666);server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");sock_client = socket(AF_INET, SOCK_STREAM, 0);if(sock_client < 0){printf("client socket create error!\n");exit(1);}if(connect(sock_client, (struct sockaddr*)&server_addr, sizeof(server_addr)) != -1){printf("client success");char buf[100] = "Hello server";send(sock_client, buf, 100, 0);recv(sock_client, buf, 100, 0);printf("Message from server: %s\n", buf);int client_len = sizeof(client_addr);while(1);close(sock_client);}else{printf("Connect error\n");exit(1);}return 0;}
阅读全文
0 0
- 简单的stream socket例子
- Spark Stream 简单例子
- 非常简单的socket例子
- 一个简单的socket例子
- 一个简单socket的例子
- window socket的简单例子
- 一个简单的socket例子
- udp socket的简单例子
- 简单的java Socket 例子
- 简单实用的socket例子
- win32 socket的一个简单的例子
- win32 socket的两个简单的例子
- socket 连接服务器的简单例子
- 一个关于linux socket的简单例子
- 一个Socket网络编程的简单例子
- 一个最简单的Socket通信例子
- [Linux] 最简单的socket通讯例子
- 简单的linux c socket例子
- ubuntu终端英文乱码问题
- Haproxy搭建web集群
- 《C++ Concurrency in Action》笔记17 promise
- 使用opencv读取一段视频并对视频进行canny边缘检测
- 算法系列__1__欧几里得算法求解最大公约数
- 简单的stream socket例子
- ubuntu 解决“无法获得锁 /var/lib/dpkg/lock -open (11:资源暂时不可用)”的方法
- switch case判断成绩等级
- eclipse插件大全
- JVM内存模型分析
- 面试总结及复习内容
- Java常用排序算法
- Vue之键盘事件
- matplotlib作图学习笔记1