C/S模型之TCP协议
服务端:// WSASever.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <WinSock2.h> #include <Windows.h> #pragma comment (lib,"wSock32.lib")int _tmain(int argc, _TCHAR* argv[]) {WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(2, 2);err = WSAStartup(wVersionRequested, &wsaData);if (err != 0) {printf("WSAStartup failed with error: %d\n", err);return 1;}if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2){printf("Could not find a usable version of Winsock.dll\n");WSACleanup();return 1;}elseprintf("The Winsock 2.2 dll was found okay\n");//程序开始//创建socket->bing-》listen->accept->recv->send->closesocket SOCKET severSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (severSocket == INVALID_SOCKET){printf("new socket error!");}SOCKADDR_IN sockAddr;sockAddr.sin_port = htons(10086);sockAddr.sin_family = AF_INET;//IP地址表示方法/*方法1: m_addr.sin_addr.S_un.S_un_b.s_b1 = 192; m_addr.sin_addr.S_un.S_un_b.s_b2 = 168; m_addr.sin_addr.S_un.S_un_b.s_b3 = 0; m_addr.sin_addr.S_un.S_un_b.s_b4 = 1;方法2: m_addr.sin_addr.S_un.S_un_w.s_w1 = (168 << 8) | 192; m_addr.sin_addr.S_un.S_un_w.s_w2 = (1 << 8) | 0;方法3: m_addr.sin_addr.S_un.S_addr = (1 << 24) | (0 << 16) | (168 << 8) | 192方法4; service.sin_addr.s_addr = inet_addr("127.0.0.1");*///sockAddr.sin_addr.s_addr = inet_addr(INADDR_ANY);sockAddr.sin_addr.S_un.S_un_b.s_b1 = 127;sockAddr.sin_addr.S_un.S_un_b.s_b2 = 0;sockAddr.sin_addr.S_un.S_un_b.s_b3 = 0;sockAddr.sin_addr.S_un.S_un_b.s_b4 = 1;if (bind(severSocket, (sockaddr*)&sockAddr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR){printf("bind error! %d\n", WSAGetLastError());}//监听1个if (listen(severSocket, 5) == SOCKET_ERROR){printf("listen error!%d\n", WSAGetLastError());}//创建一个一客户端连接的socketSOCKET sockLink = accept(severSocket, NULL, NULL);if (sockLink != INVALID_SOCKET){printf("communication sucess!\n");}int nErr=0;while (true){char pSeverBuff[MAXBYTE] = { 0 };nErr = recv(sockLink, pSeverBuff, MAXBYTE, 0);printf("%s(%d)%s\n", inet_ntoa(sockAddr.sin_addr), sockAddr.sin_port, pSeverBuff);send(sockLink, pSeverBuff, MAXBYTE, 0);//当客户端关闭时,服务端也随之关闭if (nErr == INVALID_SOCKET)break;}closesocket(severSocket);closesocket(sockLink);WSACleanup();return 0;}
客户端 // WASClient.cpp : 定义控制台应用程序的入口点。 ////#include <WinSock2.h>一定要在#include <Windows.h>前面 #include "stdafx.h" #include <WinSock2.h> #include <Windows.h> #pragma comment (lib,"wSock32.lib")int _tmain(int argc, _TCHAR* argv[]) {WORD wVersionRequested;WSADATA wsaData;int err;//版本检测wVersionRequested = MAKEWORD(2, 2);err = WSAStartup(wVersionRequested, &wsaData);if (err != 0) {printf("WSAStartup failed with error: %d\n", err);return 1;}if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {printf("Could not find a usable version of Winsock.dll\n");WSACleanup();return 1;}elseprintf("The Winsock 2.2 dll was found okay\n");//程序开始//创建socket-》连接connect-》发送send-》接受recv-》释放closesocke SOCKET clientSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (clientSocket == INVALID_SOCKET){printf("new socket error!");}SOCKADDR_IN sockAddr;//一定要把主机字节序换成网络字节序 并是short类型 htons()sockAddr.sin_port = htons(10086);sockAddr.sin_family = AF_INET;//IP地址表示方法/*方法1: m_addr.sin_addr.S_un.S_un_b.s_b1 = 192; m_addr.sin_addr.S_un.S_un_b.s_b2 = 168; m_addr.sin_addr.S_un.S_un_b.s_b3 = 0; m_addr.sin_addr.S_un.S_un_b.s_b4 = 1; 方法2: m_addr.sin_addr.S_un.S_un_w.s_w1 = (168 << 8) | 192; m_addr.sin_addr.S_un.S_un_w.s_w2 = (1 << 8) | 0; 方法3: m_addr.sin_addr.S_un.S_addr = (1 << 24) | (0 << 16) | (168 << 8) | 192*/sockAddr.sin_addr.S_un.S_un_b.s_b1 = 127;sockAddr.sin_addr.S_un.S_un_b.s_b2 = 0;sockAddr.sin_addr.S_un.S_un_b.s_b3 = 0;sockAddr.sin_addr.S_un.S_un_b.s_b4 = 1;if (connect(clientSocket, (sockaddr*)&sockAddr, sizeof(SOCKADDR_IN)) != SOCKET_ERROR){printf("communication sucess!\n");}char pClientBuf[MAXBYTE] = {0};//请求连接while (TRUE){gets_s(pClientBuf);send(clientSocket, pClientBuf, MAXBYTE, 0);recv(clientSocket, pClientBuf, MAXBYTE, 0);printf("return from sever:%s\n", pClientBuf);}WSACleanup();closesocket(clientSocket);return 0;}
转载于:https://www.cnblogs.com/gd-luojialin/p/7694158.html
C/S模型之TCP协议相关推荐
- 网络流量分析详解(包含OSI七层模型、TCP协议及Wireshark工具用法)
网络流量分析 Network Traffic Analysis(NTA) 这个系列讲的是整个网络流量分析流程,其中包含TCP协议.HTTP协议详解和Wireshark.Tcpdump的详细用法,现在只 ...
- 初识OSI七层模型与TCP协议
协议:在计算机网络中通信各方面所达成的.共同遵守和执行的一系列约定 计算机网络的体系结构:计算机网络的层次结构和各层协议的集合. 两类服务: 面向连接的服务通信双方在通信之前先建立某种状态,并在通信过 ...
- 计算机网络7层协议模型,计算机网络(一) OSI七层模型及TCP/IP dubbo协议
3.TCP/IP 四层模型: TCP/IP协议:是一个网络通信模型,是OSI 七层模型的简化,为4层模型,泛指众多(TCP,UDP,IP等)协议: OSI TCP/IP 功能 协议 应用层 应用层 文 ...
- Python网络编程(OSI模型、网络协议、TCP)
前言: 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系. 在数学上,网络是一种图,一般认为专指加权图. 网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类 型的实际问题中抽象 ...
- 计算机网络OSI模型、TCP/IP模型与5G协议
理论--计算机网络参考模型与5G协议 一. OSI参考模型 1.1 七层模型的功能 1.2 七层模型每层的定义与解释 二.5G协议 三种协议族:(TCP.UDP.IP) 三.各层的PDU协议数据单元 ...
- OSI网络模型,IO模型,BIO模型,NIO模型,AIO模型,TCP/IP协议
文章目录 一.OSI网络模型 1.1.网络的7层架构 1.1.1.七层架构的网络图 1.1.2 七层架构的功能和作用 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应 ...
- OSI 七层模型和TCP/IP模型及对应协议(详解)
OSI 七层模型和TCP/IP模型及对应协议(详解) 查看全文 http://www.taodudu.cc/news/show-6185847.html 相关文章: OSI7层网络模型协议精析 OSI ...
- OSI 七层模型和TCP/IP模型及对应协议
OSI 七层模型和TCP/IP模型及对应协议图: 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于不同层的中继系统具有不同的名称. 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部 ...
- 计算机网络基础:OSI模型与TCP/IP协议的关系
数据来源 一.分层模型 1)分层思想(把复杂的事情简单化) 通信需要 --> 定义协议标准 完成每一件事,需要的协议太多,怎么办 ?分层,分工合作 将复杂的流程分解为几个功能相当单一的子流程 - ...
最新文章
- SQL DEVELOPER 打不开了
- mysql auto_increment建表_在mysql表中创建一个ID auto_increment(在事实之后)
- [IE]微软发布IE9预览版- 建议Web开发者开始研究SVG
- 自由自在进口食品最具发展潜力的黄金产业
- (53)zabbix模板
- css中的em 简单教程 -- 转
- java 随机生成图,Java中的快速实值随机生成器
- 查看linux的系统命令,命令行查看Linux的系统版本和内核版本以及机器字长
- 微型计算机硬件认识和拆装,微型计算机系统硬件组成及外设认识.doc
- Quartus II文件编译下载和USB-Blaster驱动安装
- ideaIU--2018.2.2安装教程
- 【教程】使用腾讯云轻量应用服务器搭建Jitsi Meet视频会议系统,轻松召开私域视频会议!
- 项目经理怎么写周总结和周计划?
- 【腾讯开源项目】一个开放式的开发平台,蓝鲸PaaS平台源码对外开放
- Linux增加一块scsi硬盘,Linux下添加第二块scsi硬盘
- 人生如逆旅,我亦是行人——与余光中先生握一次手(二)
- java解析Excel日期格式转换问题
- 如果禅道忘记了管理员密码怎么拯救
- 3Dmax基础:游戏建模渲染小技巧
- 【NOIP2013模拟】Freda的传呼机
热门文章
- ffmpeg和SDL教程 04:创建线程
- 集成mysql+tomcat+apache+Eclipse的绿色版开发环境
- 《Windows Phone 7 用户界面设计和交互指南 v2.0》
- SQLite 指南之FAQ(中文)
- PAT 乙级 1010. 一元多项式求导 (25) Java版
- 配置项、基线以及软件配置控制委员会
- 1022. D进制的A+B (20)-PAT乙级真题
- 【软件工程】几种模型概念:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型
- mysql映射表_MySQL报错找不到问题?可能是你的SQL用了关键字
- pythonwindow程序窗体操作_python操作Windows窗口程序