当前位置: 首页 > news >正文

windows Socket简单编程实例

 服务端

#include <winsock2.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message)
{fputs(message, stderr);fputc('\n', stderr);exit(1);
}
int main(int argc, char* argv[])
{WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){error_handing("WSAStartup() error");}SOCKET hServSock, hClntSock;SOCKADDR_IN servAddr, clntAddr;int szClntAddr;char message[] = "hello world!";if (argc != 2){printf("Usage : %s <port>\n", argv[0]);exit(1);}hServSock = socket(AF_INET, SOCK_STREAM, 0);if (hServSock == INVALID_SOCKET){error_handing("socket() error");}memset(&servAddr, 0, sizeof(servAddr));servAddr.sin_family = AF_INET;servAddr.sin_addr.s_addr = htonl(INADDR_ANY);servAddr.sin_port = htons(atoi(argv[1]));if (bind(hServSock, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR){error_handing("bind() error");}if (listen(hServSock, 5) == SOCKET_ERROR){error_handing("listen() error");}szClntAddr = sizeof(clntAddr);hClntSock = accept(hServSock, (SOCKADDR*)&clntAddr, &szClntAddr);if (hClntSock == INVALID_SOCKET){error_handing("accept() error");}closesocket(hClntSock);closesocket(hServSock);WSACleanup();return 0;
}

客户端

#define _WINSOCK_DEPRECATED_NO_WARNINGS#include <winsock2.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message)
{fputs(message, stderr);fputc('\n', stderr);exit(1);
}int main(int argc, char* argv[])
{WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){error_handing("WSAStartup() error");}SOCKET hSocket;if (argc != 3){error_handing("argc error");}hSocket = socket(AF_INET, SOCK_STREAM, 0);SOCKADDR_IN servAddr;memset(&servAddr, 0, sizeof(servAddr));servAddr.sin_family = AF_INET;servAddr.sin_addr.S_un.S_addr = inet_addr(argv[1]);servAddr.sin_port = htons(atoi(argv[2]));if (connect(hSocket, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR){error_handing("connect error");}char message[30];int strlen = recv(hSocket, message, sizeof(message) - 1, 0);if (strlen == -1){error_handing("recv error");}printf("recv message: %s\n", message);closesocket(hSocket);WSACleanup();return 0;
}

http://www.lryc.cn/news/124975.html

相关文章:

  • 外企开展中国在线业务的三种网络加速方案:含免ICP备案CDN解决方案
  • 室内UWB定位到达角(AOA)测量精度的提高
  • “深入理解JVM:探索Java虚拟机的内部工作原理“
  • TC3XX - MCAL知识点(三十一):FlsLoader MCAL配置及代码实战
  • Yii2 mongodb分组查询
  • Springboot的多种部署方式和Linux具体的 service 操作介绍
  • 【EI/SCOPUS检索】2023年第二届光学成像与测量国际会议 (ICOIM2023)
  • 6 个简单步骤,教你创建可视化看板工作流
  • 时间相减 示例kotlin LocalDateTime
  • Boost开发指南-4.5swap
  • OpenStack对接Ceph平台
  • 【Vue2】动态组件的使用-切换组件和keep-alive,以及异步组件
  • C++的IO流
  • nodejs+vue+elementui电影订票网站系统_wqc3k
  • 2023-08-14 linux 串口终端输入长命令不换行,覆盖前面内容,stty命令设置串口终端行列数
  • 根据指定日期获取周,月,季度,年的第一天和最后一天
  • CRMEB商城系统:便捷、安全、多样化的购物方式
  • 同步_异步请求和Ajax并利用axios框架简化
  • 取个对象值导致系统崩溃
  • nestjs 基础、使用 passport 来进行鉴权
  • 1.1 : DNA 螺旋
  • .gitignore匹配规则
  • Python-OpenCV中的图像处理-GrabCut算法交互式前景提取
  • JAVA 鼠标控制与键盘输入控制
  • VB+SQL宿舍管理系统设计与实现
  • 自律人生:戒断视频、游戏、小说、躺在床上不玩手机、睡觉前总结和冥想(提升注意力、专注度)
  • 学习笔记十四:K8S最小调度单元POD概述
  • ARM--day2(cpsr、spsr、数据搬移指令、移位操作指令、位运算操作指令、算数运算指令、比较指令、跳转指令)
  • idea报错:java: 程序包org.springframework.web.bind.annotation不存在
  • Android平台GB28181设备接入端如何实现多视频通道接入?