关于Socket的客户端服务端的简单例子“本机回射”
来源:互联网 发布:淘宝店铺升天猫费用 编辑:程序博客网 时间:2024/05/17 06:11
个人记录,转自http://www.cnblogs.com/xudong-bupt/archive/2013/12/29/3483059.html
服务器端:
//测试Socket的服务端#include <sys/types.h> // for socket#include <sys/socket.h> // for socket#include <stdio.h> // for printf#include <netinet/in.h> // for sockaddr_in#include <arpa/inet.h>#include <unistd.h>#include <stdlib.h> // for exit#include <string.h> // for bzero#include <fcntl.h>#include <sys/shm.h>#define MYPORT 8887 #define QUEUE 20#define BUFFER_SIZE 1024 int main(){ //定义sockfdint server_sockfd = socket(AF_INET,SOCK_STREAM,0);//定义sockaddr_in struct sockaddr_in server_sockaddr; //bzero(&server_addr,sizeof(server_addr)); //把一段内存区的内容全部设置为0 server_sockaddr.sin_family = AF_INET; server_sockaddr.sin_port = htons(MYPORT); server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); //bind,成功返回0,出错返回-1 if(bind(server_sockfd,(struct sockaddr *)&server_sockaddr,sizeof(server_sockaddr))==-1) { printf("Bind Failed!"); exit(1); } //listen,成功返回0,出错返回-1 if(listen(server_sockfd,QUEUE)==-1) { printf("Listen Failed!"); exit(1); } //客户端套接字char buffer[BUFFER_SIZE];struct sockaddr_in client_addr;socklen_t length = sizeof(client_addr);//成功返回非负描述字,出错返回-1;int conn = accept(server_sockfd, (struct sockaddr*)&client_addr, &length);if(conn<0){printf("connect err");exit(1);}while(1){memset(buffer,0,sizeof(buffer));int len = recv(conn,buffer,sizeof(buffer),0);if(strcmp(buffer,"exit\n")==0)break;fputs (buffer,stdout);send(conn,buffer,len,0);}close(conn);close(server_sockfd);return 0;}客户端:
//socket客户端程序//实现功能是将客户端发送的数据原样返回#include <sys/types.h> // for socket#include <sys/socket.h> // for socket#include <stdio.h> // for printf#include <netinet/in.h> // for sockaddr_in#include <arpa/inet.h>#include <unistd.h>#include <stdlib.h> // for exit#include <string.h> // for bzero#include <fcntl.h>#include <sys/shm.h> #define MYPORT 8887 #define BUFFER_SIZE 1024int main(){ //定义sockfdint sock_cli = socket(AF_INET,SOCK_STREAM,0);//定义sockaddr_in struct sockaddr_in servaddr;memset(&servaddr,0,sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(MYPORT);//服务器端口servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");//连接服务器,成功返回0,错误返回-1if(connect(sock_cli,(struct sockaddr *)&servaddr,sizeof(servaddr))<0){printf("connect fail");exit(1);}char sendbuf[BUFFER_SIZE];char recvbuf[BUFFER_SIZE];while(fgets(sendbuf,sizeof(sendbuf),stdin) != NULL){send(sock_cli,sendbuf,strlen(sendbuf),0); //发送if(strcmp(sendbuf,"exit\n")==0)break;recv(sock_cli,recvbuf,sizeof(recvbuf),0); //接收fputs (recvbuf,stdout);memset(sendbuf,0,sizeof(sendbuf));memset(recvbuf,0,sizeof(recvbuf));}close(sock_cli);return 0; }同时打开两个工程,先运行服务器端的程序,会等待连接,然后运行客户端程序,服务器端会返回从客户端接收到的数据。
阅读全文
0 0
- 关于Socket的客户端服务端的简单例子“本机回射”
- 基于Socket简单的客户端-服务端例子
- 一个简单的socket客户端和服务端的例子
- 一个简单的socket客户端和服务端的例子
- 最简单的socket客户端与服务端例子
- JAVA 服务端和客户端Socket通信的简单例子
- 简单的Socket通信客户端和服务端
- java socket的小例子(服务端与客户端)
- Socket 客户端和服务端无限次通信,多个客户端和服务端通信的例子
- 一个简单的json服务端和客户端的例子
- MFC_SOCKET_关于socket的服务端与客户端的通信
- UDP 与 TCP的连接简单例子(服务端/客户端) VC
- 简单实用的java socket服务端和客户端代码
- 随手写了一个简单的socket服务端和客户端
- C# SOCKET编写的简单聊天通信程序(客户端+服务端)
- Socket实现客户端和服务端 简单的入门实例
- 简单的Socket 编程 服务端和客户端 (封装)
- 实例:linux下实现简单的socket 客户端 服务端
- React Native未来导航者:react-navigation 使用详解
- Glide ImageViewTarget 加载图片监听以及获取图片Path、Bitmap用法
- SSM框架集成mysql读写分离,动态加载数据源
- Matlab Mosfet m脚怎样隐藏
- hashlib模块
- 关于Socket的客户端服务端的简单例子“本机回射”
- 进程间通信
- 2.7 Git Basics
- eclipse安装JAVA反编译插件
- Android app\build\intermediates\res\merged\debug\values-v23\values-v23.xml 编译出错的问题
- PAT甲级真题及训练集(20)--1086. Tree Traversals Again (25)(前序,中序建二叉树,很重要!)
- 重载(overload)+数组 内存的划分
- echarts x轴文字显示不全(xAxis文字倾斜比较全面的3种做法值得推荐)
- angular2组件中定时刷新并清除定时器