博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winSockets编程(三)最简单的C/S形式
阅读量:6424 次
发布时间:2019-06-23

本文共 3486 字,大约阅读时间需要 11 分钟。

功能:向服务器端发送一个字符串,属于最简易的形式,一共需要4个主要步骤,初始化-建立套接字-连接服务器-发送数据

/*************************************************************************     此代码为最简易的客户端形式,需要背诵 *     作者:    Tinaluo*     日期:    2017/10/24************************************************************************/#include 
#include
#pragma comment(lib,"ws2_32.lib")int main(){ WSADATA wsd; if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0) { std::cout << "版本不支持" << std::endl; return -1; } SOCKET sHost = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (INVALID_SOCKET == sHost) { std::cout << "创建套接字失败" << std::endl; WSACleanup(); return -1; } SOCKADDR_IN servAddr; servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); servAddr.sin_port = htons(8000); int retVal = connect(sHost, (LPSOCKADDR)&servAddr, sizeof(servAddr)); if (retVal == SOCKET_ERROR) { std::cout << "连接服务器失败!" << std::endl; closesocket(sHost); WSACleanup(); return -1; } char buf[MAX_PATH]; ZeroMemory(buf, MAX_PATH); strcpy_s(buf, "Connect successful!"); retVal = send(sHost, buf, strlen(buf), 0); if (retVal == SOCKET_ERROR) { std::cout << "发送失败!" << std::endl; closesocket(sHost); WSACleanup(); return -1; } std::cout << "关闭套接字!" << std::endl; closesocket(sHost); WSACleanup(); return 0;}

服务端

/*************************************************************************    最简易服务器端*    目标:接收客户端问候(此程序需要极其熟练并背诵!)*    作者:Luotian*    日期:2017/10/25************************************************************************/#include 
#include "winsock2.h"#pragma comment(lib, "ws2_32.lib")int main(){ WSADATA wsd; if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0) { std::cout << "初始化失败!" << std::endl; return -1; } SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (INVALID_SOCKET == serverSocket) { std::cout << "创建套接字失败!" << std::endl; WSACleanup(); return -1; } SOCKADDR_IN addrServ; addrServ.sin_family = AF_INET; addrServ.sin_port = htons(8000); addrServ.sin_addr.s_addr = INADDR_ANY; int retVal = bind(serverSocket, (LPSOCKADDR)&addrServ, sizeof(SOCKADDR_IN)); if (SOCKET_ERROR == retVal) { std::cout << " 绑定套接字失败!" << std::endl; closesocket(serverSocket); WSACleanup(); return -1; } retVal = listen(serverSocket, 1); if (SOCKET_ERROR == retVal) { std::cout << "创建监听失败!" << std::endl; closesocket(serverSocket); WSACleanup(); return -1; } sockaddr_in addrClient; int addrClientlen = sizeof(addrClient); SOCKET clientSocket = accept(serverSocket, (sockaddr FAR*)&addrClient, &addrClientlen); if (INVALID_SOCKET == clientSocket) { std::cout << "接受请求失败!" << std::endl; closesocket(serverSocket); WSACleanup(); return -1; } char buf[MAX_PATH]; ZeroMemory(buf, MAX_PATH); retVal = recv(clientSocket, buf, MAX_PATH, 0); if (SOCKET_ERROR == retVal) { std::cout << "获取数据失败!" << std::endl; closesocket(serverSocket); closesocket(clientSocket); WSACleanup(); return -1; } std::cout <
<< std::endl; closesocket(serverSocket); closesocket(clientSocket); WSACleanup(); return 0;}

 

转载于:https://www.cnblogs.com/tinaluo/p/7682102.html

你可能感兴趣的文章
移动计算领域五大机遇:交通运输优势待挖掘
查看>>
如何把win7 旗舰版升级到sp1最新版本
查看>>
android 调用系统界面
查看>>
Software Enginering-------using git
查看>>
浅谈IP地址-1
查看>>
我的友情链接
查看>>
C#中的线程池使用(一)
查看>>
利用Windows Server Backup功能备份活动目录
查看>>
RAC维护手记08-ASM磁盘组信息查看常用命令
查看>>
实验08 磁盘和文件系统管理
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
FastDFS整合nginx后,nginx一直报错
查看>>
使用Fuel安装OpenStack juno之三使用OpenStack创建云主机和Volume
查看>>
zabbix安装源
查看>>
Eclipse+kafka集群 实例源码
查看>>
Vijos 1067Warcraft III 守望者的烦恼
查看>>
SQL语句
查看>>
LinkedList
查看>>
Python number
查看>>