Socket网络编程——C++实现
本代码可直接使用 根据TCP/IP三次握手,实验时可使用两台电脑,或者打开两个终端模拟通信。
服务器端:
#include <iostream>
#include <windows.h>using namespace std;#pragma comment(lib,"ws2_32.lib") //引用静态链接库void main()
{WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(2,2); err =WSAStarup( wVersionRequested,&wsaData);if( err != 0).0{//tell the user that we could nto find a usable//WinSock DLL;return;}if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){WSACleanup();return;}//The WinSock DLL is acceptable,Proceed windows下版本的协商SOCKET sockSer;//服务器套接字 sockSer = socket(AF_INET,SOCK_STREAM,0);//创建套接字,AF_INET代表IP家族,0是默认的方式创建 有连接是流式 无连接是数据包套接字SOCKADDR_IN addrSer,addrCli;addrSer.sin_family = AF_INET;addrSer.sin_port = htons(5050);addrSer.sin_addr.S_un.S_addr = inet_addr("192.168.3.173");bind(sockSer,(SOCKADDR)*&addrSer,sizeof(SOCKADDR));//绑定套接字 跟服务器的相关地址信息进行绑定listen(sockSer,5);//监听套接字 5是队列大小SOCKET sockConn;//给出一个相应的套接字int len = sizeof(SOCKADDR);cout<<"Server Wait Client Connect......."<<endl;sockConn = accept(sockSer,(SOCKADDR*)&addrCli,&len);//处理新到连接 3个参数分别是服务器的套接字号;客户端地址,相应地址层度的地址以地址形式传递if(sockConn == INVALID_SOCKET);//INVALID_SOCKET非法套接字{cout<<"Server Accept Client Connect Fail"<<endl;return;}else{cout<<"Server Accept Client Connect Success"<<endl;return;}char sendbuf[256];char recvbuf[256];while(1){cout<<"Ser:>"cin>>sendbuf;//缓冲区if(strcmp(sendbuf,"quit")==0);//相等表示服务器请求退出{break;}send(sockConn,sendbuf,strlen(sendbuf)+1,0);//发送服务器 +1为了字符串的/0 3个参数分别是要发送的套接字,缓冲,长度recv(sockConn,recvbuf,256,0);//接收cout<<"Cli:>"<<recvbuf<<endl;}closesocket(sockSer);//WSACleanup();//清除版本信息}
用户端:
#include <iostream>
#include <windows.h>using namespace std;#pragma comment(lib,"ws2_32.lib")void main()
{WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(2,2);err =WSAStarup( wVersionRequested,&wsaData);if( err != 0){//tell the user that we could nto find a usable//WinSock DLL;return;}if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){WSACleanup();return;}//The WinSock DLL is acceptable,Proceed windows下版本的协商SOCKET sockSli;//服务器套接字sockSli = socket(AF_INET,SOCK_STREAM,0);//创建套接字 家族协议;流式套接字;默认值SOCKADDR_IN addrSer;//addrSer.sin_family = AF_INET;addrSer.sin_port = htons(5050);addrSer.sin_addr.S_un.S_addr = inet_addr ("127.0.0.1");int res = connect(sockCli,(SOCKADDR*)&addrSer,sizeof(SOCKADDR));//res为connect返回值 查阅相关函数,若为0则表示没有错误if (res != 0){cout<<"Client Connect Servrer Fail!"<<endl;return;}else{cout<<"Client Connect Servrer Success!"<<endl;}char sendbuf[256];char recvbuf[256];//发空间和接收空间while(1){recv(sockCli,recvbuf,256,0);cout<<"Ser:>"<<recvbuf<<endl;cout<<"Cli:>";cin>>sendbuf;if(strcmp(sendbuf,"quit") == 0)//客户端请求退出{break;}send(sockCli,sendbuf,strlen(sendbuf)+1,0);}closesocket(sockCli);WSACleanup();
}
转载于:https://www.cnblogs.com/wuyepeng/p/9717005.html
Socket网络编程——C++实现相关推荐
- Linux C++/Java/Web/OC Socket网络编程
一,Linux C++ Socket网络编程 1.什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制 ...
- python运维开发之socket网络编程01
python运维开发之socket网络编程01说明:本文来自来自北京老男孩linux运维实战培训中心-运维开发课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog ...
- Socket网络编程(2)--服务端实现
中秋了,首先祝大家中秋快乐,闲着无事在家整一个socket的聊天程序,有点仿QQ界面,就是瞎折腾,不知道最后是不是能将所有功能实现. 如果你对socket不了解,请看这篇文章:http://www.c ...
- Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程
目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...
- Socket网络编程笔记
网络.计算机网络的构成是什么? 网络: 在计算机领域中,网络是信息传输.接收.共享的虚拟平台,通过它可以把各个点.面(组织之间).体(例如公共app)的信息联系到一起,从而实现这些资源的共享. 局域网 ...
- 【Socket网络编程】14. perror()、errno 的使用
经常会在socket网络编程时看到errno和perror(),他们是什么呢? 函数定义: void perror(const char *s); perror ("open_port&qu ...
- socket网络编程——套接字地址结构
声明:此博客是本人根据老师课件总结的,如有抄袭行为,本人会即刻删除. 1.主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序,不同的主机采用的字节序列可能不同.大端字节序是指一个整数的 ...
- 【网络编程】之四、socket网络编程例解
前面说了那么多,现在我们给出4个代码+详解,基于win32平台的socket编程.使用TCP 和 UDP 两种协议. OK,先来看一下TCP服务器和客户端: [cpp] view plaincopy ...
- MFC socket网络编程(流程示例)
MFC socket网络编程(流程示例) 1.TCP流式套接字的编程步骤 在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK! 服务器端程序: 1.加 ...
- Socket网络编程--小小网盘程序(5)
http://www.cnblogs.com/wunaozai/p/3893469.html 各位好呀!这一小节应该就是这个小小网盘程序的最后一小节了,这一节将实现最后的三个功能,即列出用户在服务器中 ...
最新文章
- ISME:宿主性别可以决定肠道微生物对寄生虫感染的响应
- 使用Process.Start打开文件夹或网页
- win7系统服务器环境配置,windows7系统安装与配置Tomcat服务器环境
- Angular如何判断某个DOM节点包含Directive
- argo 现水下永动机器人_现水下永动机器人 水下永动机器人有什么作用?
- FastTunnel - 打造人人都能搭建的内网穿透工具
- 常用的正则化方法总结
- 分页总页数计算方法 所有分页通用
- Java爬虫入门程序
- c语言计算机二级知识点总结,计算机二级考试C语言知识点总结
- 软件工程导论 银行储蓄系统_银行储蓄系统.ppt
- 用C语言解一元二次方程
- 例题 9-27 方块消除(Blocks, UVa10559)
- lol中各服务器的位置,LOL四大服务器王者常用位置分析
- 文件中的EOF是什么
- 搭建APP如何选择服务器
- Mysql的四表练习题(一)
- iptables ip 白名单操作
- c语言课程设计雪花飞舞,雪花飞舞--c语言课程设计.doc
- 【shell】判断语句、循环语句
热门文章
- JDK6 中队web service的支持
- 闪亮蔚蓝_在R中构建第一个闪亮的Web应用
- 第四章 数据的概括性度量
- make modules 和 make modules_install
- 印前处理的“发动机”——RIP
- 浏览器自定义css代码,根据浏览器不同设置CSS
- 5错误怎么办_“选择不对,一生白费”:如果选错了,该怎么办?记住这两句话...
- python文本解析_如何通过python进行文本解析?
- java mongo分组统计_探秘 Dubbo 的度量统计基础设施 - Dubbo Metrics
- linux命令 重定向%3e,linux输出信息调试信息重定向