服务端:// 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协议相关推荐

  1. 网络流量分析详解(包含OSI七层模型、TCP协议及Wireshark工具用法)

    网络流量分析 Network Traffic Analysis(NTA) 这个系列讲的是整个网络流量分析流程,其中包含TCP协议.HTTP协议详解和Wireshark.Tcpdump的详细用法,现在只 ...

  2. 初识OSI七层模型与TCP协议

    协议:在计算机网络中通信各方面所达成的.共同遵守和执行的一系列约定 计算机网络的体系结构:计算机网络的层次结构和各层协议的集合. 两类服务: 面向连接的服务通信双方在通信之前先建立某种状态,并在通信过 ...

  3. 计算机网络7层协议模型,计算机网络(一) OSI七层模型及TCP/IP dubbo协议

    3.TCP/IP 四层模型: TCP/IP协议:是一个网络通信模型,是OSI 七层模型的简化,为4层模型,泛指众多(TCP,UDP,IP等)协议: OSI TCP/IP 功能 协议 应用层 应用层 文 ...

  4. Python网络编程(OSI模型、网络协议、TCP)

    前言: 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系. 在数学上,网络是一种图,一般认为专指加权图. 网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类 型的实际问题中抽象 ...

  5. 计算机网络OSI模型、TCP/IP模型与5G协议

    理论--计算机网络参考模型与5G协议 一. OSI参考模型 1.1 七层模型的功能 1.2 七层模型每层的定义与解释 二.5G协议 三种协议族:(TCP.UDP.IP) 三.各层的PDU协议数据单元 ...

  6. OSI网络模型,IO模型,BIO模型,NIO模型,AIO模型,TCP/IP协议

    文章目录 一.OSI网络模型 1.1.网络的7层架构 1.1.1.七层架构的网络图 1.1.2 七层架构的功能和作用 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应 ...

  7. OSI 七层模型和TCP/IP模型及对应协议(详解)

    OSI 七层模型和TCP/IP模型及对应协议(详解) 查看全文 http://www.taodudu.cc/news/show-6185847.html 相关文章: OSI7层网络模型协议精析 OSI ...

  8. OSI 七层模型和TCP/IP模型及对应协议

    OSI 七层模型和TCP/IP模型及对应协议图: 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于不同层的中继系统具有不同的名称. 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部 ...

  9. 计算机网络基础:OSI模型与TCP/IP协议的关系

    数据来源 一.分层模型 1)分层思想(把复杂的事情简单化) 通信需要 --> 定义协议标准 完成每一件事,需要的协议太多,怎么办 ?分层,分工合作 将复杂的流程分解为几个功能相当单一的子流程 - ...

最新文章

  1. SQL DEVELOPER 打不开了
  2. mysql auto_increment建表_在mysql表中创建一个ID auto_increment(在事实之后)
  3. [IE]微软发布IE9预览版- 建议Web开发者开始研究SVG
  4. 自由自在进口食品最具发展潜力的黄金产业
  5. (53)zabbix模板
  6. css中的em 简单教程 -- 转
  7. java 随机生成图,Java中的快速实值随机生成器
  8. 查看linux的系统命令,命令行查看Linux的系统版本和内核版本以及机器字长
  9. 微型计算机硬件认识和拆装,微型计算机系统硬件组成及外设认识.doc
  10. Quartus II文件编译下载和USB-Blaster驱动安装
  11. ideaIU--2018.2.2安装教程
  12. 【教程】使用腾讯云轻量应用服务器搭建Jitsi Meet视频会议系统,轻松召开私域视频会议!
  13. 项目经理怎么写周总结和周计划?
  14. 【腾讯开源项目】一个开放式的开发平台,蓝鲸PaaS平台源码对外开放
  15. Linux增加一块scsi硬盘,Linux下添加第二块scsi硬盘
  16. 人生如逆旅,我亦是行人——与余光中先生握一次手(二)
  17. java解析Excel日期格式转换问题
  18. 如果禅道忘记了管理员密码怎么拯救
  19. 3Dmax基础:游戏建模渲染小技巧
  20. 【NOIP2013模拟】Freda的传呼机

热门文章

  1. ffmpeg和SDL教程 04:创建线程
  2. 集成mysql+tomcat+apache+Eclipse的绿色版开发环境
  3. 《Windows Phone 7 用户界面设计和交互指南 v2.0》
  4. SQLite 指南之FAQ(中文)
  5. PAT 乙级 1010. 一元多项式求导 (25) Java版
  6. 配置项、基线以及软件配置控制委员会
  7. 1022. D进制的A+B (20)-PAT乙级真题
  8. 【软件工程】几种模型概念:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型
  9. mysql映射表_MySQL报错找不到问题?可能是你的SQL用了关键字
  10. pythonwindow程序窗体操作_python操作Windows窗口程序