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

c++ 简单SOCKET 通信

 

#include "stdafx.h"
#include <Winsock2.h>
#include <stdio.h>
#include <iostream>
#include "SocketService.h"
#pragma comment(lib, "WS2_32")
using std::string;
namespace SocketService
{
 //监听端: 
void WINAPI StartToListen(void (*p)())
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup(wVersionRequested, &wsaData);
if ( err != 0 )
 {
  return;
 }
 if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1 ) 
 {
  WSACleanup();
  return;
 }
 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
 SOCKADDR_IN addrSrv;
 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(8000);
 
 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 listen(sockSrv,5);
 SOCKADDR_IN addrClient;
 int len=sizeof(SOCKADDR);
 while(1)
 {
  SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
  p();
  char sendBuf[50];
  send(sockConn,sendBuf,strlen(sendBuf)+1,0);
  char recvBuf[50];
  recv(sockConn,recvBuf,50,0);
  p();
  closesocket(sockConn);
 }
}
//发送端
void WINAPI Send(char* ipAddress,char* message)
{
WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested = MAKEWORD(1,1);
 
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 ) {
  return;
 }
 
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
         HIBYTE( wsaData.wVersion ) != 1 ) {
   WSACleanup( );
  return;
 }
 SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
 
 SOCKADDR_IN addrSrv;
 addrSrv.sin_addr.S_un.S_addr=inet_addr(ipAddress);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(8000);
 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 send(sockClient,message,strlen(message)+1,0);
 
 closesocket(sockClient);
 WSACleanup();
}
}


相关文章:

  • android第一个项目--hello world
  • 又一个恶心的驱动的问题
  • 点击窗体任意位置拖动 c#
  • 天翼宣传的软肋
  • asp.net gridview 分页
  • Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
  • WPF组件化开发技术实践
  • 犀利广州话
  • Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载
  • wpf mvvm模式 实例
  • 近期谷歌网页收录数量已经明显超过百度
  • JS操作cookie
  • JS实现拖拽
  • JS显示时间
  • 我开发的一个信息管理小工具——PersonalInfo
  • hexo+github搭建个人博客
  • 345-反转字符串中的元音字母
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript实现分页效果
  • Java-详解HashMap
  • Laravel Telescope:优雅的应用调试工具
  • linux安装openssl、swoole等扩展的具体步骤
  • Zepto.js源码学习之二
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 简单基于spring的redis配置(单机和集群模式)
  • 算法---两个栈实现一个队列
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (MATLAB)第五章-矩阵运算
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (新)网络工程师考点串讲与真题详解
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)linux下的时间函数使用
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .net对接阿里云CSB服务
  • @ConfigurationProperties注解对数据的自动封装
  • [ C++ ] 继承
  • []FET-430SIM508 研究日志 11.3.31
  • [17]JAVAEE-HTTP协议
  • [codeforces] 25E Test || hash
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [HarmonyOS]第一课:从简单的页面开始
  • [IE编程] 如何在IE8 下调试BHO控件/工具栏(调试Tab进程)