1:Server端
#include <stdio.h> #include <Winsock2.h> #pragma comment(lib, "ws2_32.lib") void main()
{ 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(6000);
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);
char sendBuf[50];
sprintf (sendBuf, "Welcome %s to here!" ,inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf, strlen (sendBuf)+1,0);
char recvBuf[50];
recv(sockConn,recvBuf,50,0);
printf ( "%s\n" ,recvBuf);
closesocket(sockConn);
}
} 2.客户端:
#include <stdio.h>
#include <Winsock2.h>
void main() { 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("127.0.0.1"); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); send(sockClient,"hello",strlen("hello")+1,0); char recvBuf[50]; recv(sockClient,recvBuf,50,0); printf("%s\n",recvBuf); closesocket(sockClient); WSACleanup(); }
第二升级: 改进支持多客户端连接; 怎么办,accpet一个连接后,立刻就起一个线程这样 针对每个客户端 启动一个线程去hold住,做接收和发送的工作 ,这样可以支持多个 客户端了
第三部分: iocp方式,要知道线程这个东西是很消耗cpu资源的, 并且线程数量是有限的,并且io也消耗资源所以需要使用iocp这种框架系统 去做!!
|
相关推荐
在Windows平台上进行C++ Socket编程是一项基础且重要的技能,尤其对于计算机网络课程的学习者来说。Socket编程主要用于创建网络通信的应用程序,它允许不同设备间的进程相互通信。在这个实验中,我们将关注如何使用...
在IT领域,网络编程是不可或缺的一部分,特别是在C++这样的系统级编程语言中。本文将深入讲解如何使用C++通过socket TCP实现HTTP POST方法提交form_data类型的表单数据,包括图片和mp4视频到HTTP服务器。这个过程...
**Windows中的Socket编程**是构建网络应用程序的关键技术,尤其对于使用C++的开发者而言。Socket编程允许程序通过网络发送和接收数据,而Windows操作系统通过Winsock库提供了对Socket的支持。 首先,**套接字...
Socket编程的基本流程包括以下几个步骤: - 初始化Winsock库,通过调用`WSAStartup()`函数设置Winsock版本和配置。 - 创建Socket,使用`socket()`函数指定协议类型(如TCP或UDP)和通信域(如IPv4或IPv6)。 - 绑定...
《Visual C++ 实用教程(第3版)》是由郑阿奇主编的一本关于Microsoft Visual C++编程的权威教材。这本书旨在帮助读者深入理解和掌握使用Visual C++进行应用程序开发的技术和方法。通过阅读本书和配套的源代码及课件...
Socket编程是网络编程的核心技术之一,通过以上步骤可以实现基本的客户端和服务器之间的通信。在实际应用中,还需要考虑错误处理、多线程管理等问题。此外,随着网络技术的发展,还有许多高级特性和技术,如SSL/TLS...
在C语言中,Socket编程主要涉及以下几个步骤: 1. **创建Socket**:通过调用`socket()`函数创建一个Socket描述符,该函数需要指定协议族(通常为AF_INET代表IPv4)和套接字类型(如SOCK_STREAM代表TCP,SOCK_DGRAM...
创建一个UDP Socket的第一步是初始化Winsock。这通常通过调用`WSAStartup`函数完成,它会加载Winsock DLL并设置适当的版本信息。然后,我们使用`socket`函数创建一个Socket实例,指定其类型为`SOCK_DGRAM`,因为UDP...
本文详细介绍了在Visual C++环境下使用Winsock API进行Socket编程的基本步骤和核心概念。通过上述示例代码,读者不仅可以了解到Socket编程的基本流程,还可以进一步探索和扩展其功能,例如实现更复杂的错误处理机制...
创建Socket是建立通信的第一步。在C++中,可以通过调用`socket`函数创建一个Socket对象。 ```cpp SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0); ``` 这里的参数`AF_INET`表示使用IPv4协议族,`SOCK_STREAM`...
【C++ 网络爬虫代码】是一个基于C++编程语言实现的网络爬虫程序,利用了Winsock库进行网络通信,专为处理HTTP协议设计。本项目旨在教授如何利用C++进行网络爬取,解析HTML内容以及提取图片URL,并将图片下载到本地。...
11. **网络编程**:`《TCPIP协议内核源码分析》正式版_第2章从socket创建开始.doc`可能涵盖了网络编程的基础,如套接字(socket)编程,这是构建网络应用程序的基础。 12. **位运算**:`51CTO下载-位运算.pdf`可能...
- 错误处理是Socket编程的重要部分,通常使用`WSAGetLastError`获取错误代码,并根据错误代码进行相应的处理。 - 对于跨平台编程,可能需要使用第三方库(如Boost.Asio或Poco)或者使用标准C++库的实验性网络API。 ...
Socket编程是计算机网络通信中的重要技术,主要用于实现进程间的网络通信。在这个场景中,我们讨论的是如何使用Socket来实现一个网络嗅探器。网络嗅探器是一种能够捕获网络上数据包的工具,用于监控、分析网络流量,...
《Visual C++网络通信编程实用案例精选》第二版是一本深入探讨C++在构建网络通信应用方面的专业书籍。随书附带的光盘代码包含了大量精心设计的实例,旨在帮助读者掌握网络通信编程的核心概念和技术。以下是这些知识...
标题中的“Java和C++通信结构体发送”指的是在Java和C++这两种不同的编程语言之间,通过网络进行通信时如何有效地传递结构体数据的问题。在跨语言通信中,由于二进制序列化和内存布局的差异,直接传输结构体会面临...
总之,使用原生socket编程实现SSL访问HTTPS是一项复杂但必要的任务,它涉及到网络编程和加密技术的融合。通过理解和实践,开发者可以构建更安全、自主的网络应用程序,而不再依赖特定的DLL或第三方库。
在C++中,使用Socket编程通常涉及以下步骤: 1. **创建Socket**:调用`socket()`函数创建一个Socket描述符,指定协议类型(如TCP或UDP)和地址族(如IPv4或IPv6)。 2. **绑定Socket**:使用`bind()`函数将Socket...
直接网络编程5.1 原始套接字编程5.1.1 原始套接字简介5.1.2 WinSock的原始套接字5.1.3 Winsock原始套接字编程步骤5.1.4 Winsock原始套接字实例5.2 基于winPcap网络数据包捕获5.2.1 WinPcap简介5.2.2 网络数据包捕获...