惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
K
Kaspersky official blog
V
Vulnerabilities – Threatpost
Hacker News - Newest:
Hacker News - Newest: "LLM"
Security Archives - TechRepublic
Security Archives - TechRepublic
S
Secure Thoughts
I
Intezer
TaoSecurity Blog
TaoSecurity Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Spread Privacy
Spread Privacy
A
About on SuperTechFans
NISL@THU
NISL@THU
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
S
Security @ Cisco Blogs
S
SegmentFault 最新的问题
G
Google Developers Blog
B
Blog
N
News and Events Feed by Topic
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
V2EX - 技术
V2EX - 技术
V
Visual Studio Blog
MyScale Blog
MyScale Blog
Webroot Blog
Webroot Blog
Vercel News
Vercel News
IT之家
IT之家
Microsoft Security Blog
Microsoft Security Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
S
Security Affairs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
博客园 - 叶小钗
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Know Your Adversary
Know Your Adversary
T
Tailwind CSS Blog
F
Fortinet All Blogs
D
DataBreaches.Net
博客园 - Franky
博客园_首页
H
Heimdal Security Blog
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
Attack and Defense Labs
Attack and Defense Labs
Project Zero
Project Zero
雷峰网
雷峰网

博客园 - 痛并快乐着

linux redhat 中的网络配置 Javascript 自适应iframe页面大小(有效) - 痛并快乐着 - 博客园 在网页上点击链接激活MSN对话窗口。 - 痛并快乐着 - 博客园 asp枚举指定目录下的文件。 - 痛并快乐着 - 博客园 防止网页上的图片被保存 - 痛并快乐着 - 博客园 Asp/asp.net中下拉列表的N级联动 - 痛并快乐着 - 博客园 在MFC类中各种类的指针的获取和应用 Socket中如何设置连接超时 - 痛并快乐着 - 博客园 VC++实现对远程计算机屏幕的监视 VC操纵IIS - 痛并快乐着 - 博客园 几个有用的vbs脚本 - 痛并快乐着 - 博客园 WSH脚本宿主Wscript脚本主对象 读取硬盘物理序列号 5.7 使用通用对话框 VC读写注册表 VC常用编程经验 - 痛并快乐着 - 博客园 按键精灵高级脚本 _com_util::ConvertStringToBSTR 使用时的注意事项 选择目录 - 痛并快乐着 - 博客园
SOCKET编程总结 - 痛并快乐着 - 博客园
痛并快乐着 · 2006-02-27 · via 博客园 - 痛并快乐着

服务端:
1.初始化socket环境,创建socket
2.梆定一个端口
3.开始监听
4.接收客户端
5.接收到客户端之后,使用这个socket来与这个客户通信

#include "stdAfx.h"
#include <winsock2.h>
#include <mswsock.h>
#include <iostream>

using namespace std;

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "mswsock.lib")

DWORD IniSOCKDLL()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err=0;
 
 wVersionRequested = MAKEWORD( 2, 2 );
 err = WSAStartup( wVersionRequested, &wsaData ); 
 return err;
}

int main(int argc, char* argv[])
{
 cout<<"程序开始"<<endl;
 IniSOCKDLL();
 SOCKET ss=WSASocket(AF_INET,
  SOCK_STREAM,
  0,
  NULL,
  0,
  NULL);
 
 SOCKADDR_IN addr;
 int len;
 addr.sin_family=AF_INET;
 addr.sin_addr.s_addr = htonl(INADDR_ANY);
 addr.sin_port = htons(1002);
 len=sizeof(addr);
 
 bind(ss , (PSOCKADDR)&addr , len);
 listen(ss,5);
 
 SOCKET sc=accept(ss,(PSOCKADDR)&addr,&len);
 char buff[1024];
 ZeroMemory(buff,1024);
 recv(sc,buff,1024,0);
 cout<<buff<<endl;
 
 ZeroMemory(buff,1024);
 memcpy(buff,"123",3);
 send(sc,buff,3,0);
 
 closesocket(sc);
 closesocket(ss);
 return 0;
}

客户端:
1.初始化socket环境,创建socket
2.连接服务端
3.开启一个线程来接收数据
4.使用send直接发数据包

#include "stdAfx.h"
#include <winsock2.h>
#include <mswsock.h>
#include <iostream>

using namespace std;

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "mswsock.lib")

DWORD IniSOCKDLL()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err=0;
 
 wVersionRequested = MAKEWORD( 2, 2 );
 err = WSAStartup( wVersionRequested, &wsaData ); 
 return err;
}

int main(int argc, char* argv[])
{
 IniSOCKDLL();
 SOCKET sc=WSASocket(AF_INET,
  SOCK_STREAM,
  0,
  NULL,
  0,
  NULL);
 
 SOCKADDR_IN addr;
 int len;
 addr.sin_family=AF_INET;
 addr.sin_addr.s_addr = inet_addr("127.0.0.1");
 addr.sin_port = htons(1002);
 len=sizeof(addr);
 
 connect(sc, (struct sockaddr *)&addr, len);
 
 char buff[1024];
 ZeroMemory(buff,1024);
 memcpy(buff,"123",3);
 send(sc,buff,3,0);

 recv(sc,buff,1024,0);
 cout<<buff<<endl;

 closesocket(sc);
 return 0;
}

由这个我们可以做一个这样的模型:
为每个阻塞函数开一个线程,让它来处理。
这就要留意退出的时候把这一些线程给关闭