本代码可直接使用 根据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++实现相关推荐

  1. Linux C++/Java/Web/OC Socket网络编程

    一,Linux C++ Socket网络编程 1.什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制 ...

  2. python运维开发之socket网络编程01

    python运维开发之socket网络编程01说明:本文来自来自北京老男孩linux运维实战培训中心-运维开发课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog ...

  3. Socket网络编程(2)--服务端实现

    中秋了,首先祝大家中秋快乐,闲着无事在家整一个socket的聊天程序,有点仿QQ界面,就是瞎折腾,不知道最后是不是能将所有功能实现. 如果你对socket不了解,请看这篇文章:http://www.c ...

  4. Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程

    目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...

  5. Socket网络编程笔记

    网络.计算机网络的构成是什么? 网络: 在计算机领域中,网络是信息传输.接收.共享的虚拟平台,通过它可以把各个点.面(组织之间).体(例如公共app)的信息联系到一起,从而实现这些资源的共享. 局域网 ...

  6. 【Socket网络编程】14. perror()、errno 的使用

    经常会在socket网络编程时看到errno和perror(),他们是什么呢? 函数定义: void perror(const char *s); perror ("open_port&qu ...

  7. socket网络编程——套接字地址结构

    声明:此博客是本人根据老师课件总结的,如有抄袭行为,本人会即刻删除. 1.主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序,不同的主机采用的字节序列可能不同.大端字节序是指一个整数的 ...

  8. 【网络编程】之四、socket网络编程例解

    前面说了那么多,现在我们给出4个代码+详解,基于win32平台的socket编程.使用TCP 和 UDP 两种协议. OK,先来看一下TCP服务器和客户端: [cpp] view plaincopy ...

  9. MFC socket网络编程(流程示例)

    MFC socket网络编程(流程示例) 1.TCP流式套接字的编程步骤 在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK! 服务器端程序: 1.加 ...

  10. Socket网络编程--小小网盘程序(5)

    http://www.cnblogs.com/wunaozai/p/3893469.html 各位好呀!这一小节应该就是这个小小网盘程序的最后一小节了,这一节将实现最后的三个功能,即列出用户在服务器中 ...

最新文章

  1. ISME:宿主性别可以决定肠道微生物对寄生虫感染的响应
  2. 使用Process.Start打开文件夹或网页
  3. win7系统服务器环境配置,windows7系统安装与配置Tomcat服务器环境
  4. Angular如何判断某个DOM节点包含Directive
  5. argo 现水下永动机器人_现水下永动机器人 水下永动机器人有什么作用?
  6. FastTunnel - 打造人人都能搭建的内网穿透工具
  7. 常用的正则化方法总结
  8. 分页总页数计算方法 所有分页通用
  9. Java爬虫入门程序
  10. c语言计算机二级知识点总结,计算机二级考试C语言知识点总结
  11. 软件工程导论 银行储蓄系统_银行储蓄系统.ppt
  12. 用C语言解一元二次方程
  13. 例题 9-27 方块消除(Blocks, UVa10559)
  14. lol中各服务器的位置,LOL四大服务器王者常用位置分析
  15. 文件中的EOF是什么
  16. 搭建APP如何选择服务器
  17. Mysql的四表练习题(一)
  18. iptables ip 白名单操作
  19. c语言课程设计雪花飞舞,雪花飞舞--c语言课程设计.doc
  20. 【shell】判断语句、循环语句

热门文章

  1. JDK6 中队web service的支持
  2. 闪亮蔚蓝_在R中构建第一个闪亮的Web应用
  3. 第四章 数据的概括性度量
  4. make modules 和 make modules_install
  5. 印前处理的“发动机”——RIP
  6. 浏览器自定义css代码,根据浏览器不同设置CSS
  7. 5错误怎么办_“选择不对,一生白费”:如果选错了,该怎么办?记住这两句话...
  8. python文本解析_如何通过python进行文本解析?
  9. java mongo分组统计_探秘 Dubbo 的度量统计基础设施 - Dubbo Metrics
  10. linux命令 重定向%3e,linux输出信息调试信息重定向