- 浏览: 11516 次
最新评论
TCP Socket编程 C/C++实现 (Windows Platform SDK)
2010年11月10日
TCP Socket编程 C/C++实现 (Windows Platform SDK)
Server:
------------------------------------------------------------
#pragma comment(lib, "ws2_32.lib")
#include
#include
void main()
{
//版本协商
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1); //0x0101
err = WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return;
}
if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)
//wsaData.wVersion!=0x0101
{
WSACleanup();
return;
}
//创建Socket
SOCKET sockSvr = socket(AF_INET,SOCK_STREAM,0);
//创建IP地址和端口
SOCKADDR_IN addrSvr;
addrSvr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSvr.sin_family = AF_INET;
addrSvr.sin_port = htons(6000);
//绑定端口监听
bind(sockSvr,(SOCKADDR*)&addrSvr,sizeof(SOCKADDR));
listen(sockSvr,5);
sockaddr_in addrClient;
int len = sizeof(SOCKADDR);
while(true)
{
//阻塞方法,获得一个客户Socket连接
SOCKET sockConn = accept(sockSvr,(SOCKADDR*)&addrClient,&len);
char sendbuffer[128];
sprintf(sendbuffer,"Welcom %s!",inet_ntoa(addrClient.sin_addr));
//向客户Socket发送数据
send(sockConn,sendbuffer,strlen(sendbuffer)+1,0);
char recvbuffer[128];
//从客户Soc接受数据
recv(sockConn,recvbuffer,128,0);
printf("%s\n",recvbuffer);
//关闭Socket
closesocket(sockConn);
}
closesocket(sockSvr);
//释放Winsock资源
WSACleanup();
}
Client:
--------------------------------------------------------
#pragma comment (lib,"ws2_32.lib")
#include
#include
void main()
{
//版本协商
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1); //0x0101
err = WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return;
}
if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)
//wsaData.wVersion!=0x0101
{
WSACleanup();
return;
}
//创建连向服务器的套接字
SOCKET sock = socket(AF_INET,SOCK_STREAM,0);
//创建地址信息
SOCKADDR_IN hostAddr;
hostAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
hostAddr.sin_family = AF_INET;
hostAddr.sin_port = htons(6000);
//连接服务器
connect(sock,(SOCKADDR*)&hostAddr,sizeof(SOCKADDR));
char revBuf[128];
//从服务器获得数据
recv(sock,revBuf,128,0);
printf("%s\n",revBuf);
//向服务器发送数据
send(sock,"Hello Host!",12,0);
closesocket(sock);
}
转自:http://blog.csdn.net/nyzhl/archive/2008/07/04/2612815.aspx
UDP Socket编程 C/C++实现 (Windows Platform SDK)
Server:
-------------------------------------------------------
#pragma comment (lib,"ws2_32.lib")
#include
#include
void main()
{
//版本协商
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
/* The WinSock DLL is acceptable. Proceed. */
//创建数据报套接字
SOCKET svr = socket(AF_INET,SOCK_DGRAM,0);
//创建本地地址信息
SOCKADDR_IN addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(6000);
addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
int len = sizeof(SOCKADDR);
bind(svr,(SOCKADDR*)&addr,len);
//创建客户端地址对象
SOCKADDR_IN addrClient;
char recvBuf[128];
char sendBuf[128];
char tempBuf[256];
while(true)
{
//接收数据
recvfrom(svr,recvBuf,128,0,(SOCKADDR*)&addrClient,&len);
char* ipClient = inet_ntoa(addrClient.sin_addr);
sprintf(tempBuf,"%s said: %s\n",ipClient,recvBuf);
printf("%s",tempBuf);
gets(sendBuf);
//发送数据
sendto(svr,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len);
}
closesocket(svr);
WSACleanup();
}
Client:
------------------------------------------------------
#pragma comment (lib,"ws2_32.lib")
#include
#include
void main()
{
//版本协商
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
/* The WinSock DLL is acceptable. Proceed. */
//创建服务器套接字
SOCKET Svr = socket(AF_INET,SOCK_DGRAM,0);
//创建地址
SOCKADDR_IN addrSvr;
addrSvr.sin_family = AF_INET;
addrSvr.sin_port = htons(6000);
addrSvr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
char recvBuf[128];
char sendBuf[128];
int len = sizeof(SOCKADDR);
while(true)
{
gets(sendBuf);
//发送数据
sendto(Svr,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSvr,len);
//接收数据
recvfrom(Svr,recvBuf,128,0,(SOCKADDR*)&addrSvr,&len);
char* ipSvr = inet_ntoa(addrSvr.sin_addr);
printf("%s said: %s\n",ipSvr,recvBuf);
}
closesocket(Svr);
WSACleanup();
}
发表评论
-
评论 (
2012-01-20 11:54 331评论 ( 2011年10月04日 ... -
2010年普通高等学校招生全国统一考试(重庆卷)
2012-01-20 11:54 5382010年普通高等学校招生全国统一考试(重庆卷) 2012年 ... -
20111105晚7点40分至8点20分之间经历死亡飞车
2012-01-20 11:54 66720111105晚7点40分至8点20分之间经历死亡飞车 2 ... -
全国2011年1月自学考试综合英语(一)试题及答案 - 自考试题及答案 - 锐智博客
2012-01-20 11:54 528全国2011年1月自学考试综合英语(一)试题及答案 - 自考试 ... -
学习英语的方法
2012-01-19 16:43 603学习英语的方法 2011年02月16日 ... -
学英语
2012-01-19 16:43 391学英语 2011年09月07日 学英语有诀窍,一是方法, ... -
从母语学习规律中推断出英语学习的规律
2012-01-19 16:43 841从母语学习规律中推断出英语学习的规律 2011年08月17日 ... -
Java中使用Socket和C#通讯的解决
2012-01-17 06:28 1168Java中使用Socket和C#通讯的解决 2011年05月 ... -
一个C#Socket通信小例子
2012-01-17 06:27 806一个C#Socket通信小例子 ... -
[C#通信二]C#.net同步异步SOCKET通讯和多线程总结1(转)
2012-01-17 06:27 951[C#通信二]C#.net同步异步SOCKET通讯和多线程总结 ... -
C++网络编程之SOCKET应用篇
2012-01-17 06:27 1352C++网络编程之SOCKET应用篇 2010年06月22日 ... -
如果你的书柜内没有《朗读手册》,那么你就到这里来读吧!(一)
2012-01-16 05:08 612如果你的书柜内没有《 ... -
二读《朗读手册》
2012-01-16 05:08 539二读《朗读手册》 2009 ... -
朗读的记忆
2012-01-16 05:08 605朗读的记忆 2010年11月03日 今天在豆瓣上,新加入 ... -
在线听著名英文原版小说(朗读版超赞)
2012-01-16 05:08 798在线听著名英文原版小说(朗读版超赞) 2011年04月19日 ...
相关推荐
在linux平台下,涉及到unix套节字编程,用C/C++实现代理服务器,是基于TCP/IP和HTTP协议的编程
实现了服务器与客户端功能的合二为一,客户端启动后,连接三次服务器,如果失败,则自己自动变为服务器。
简单tcp socket 客户端 服务端代码实现 附C++代码源码
Linux 下使用C++进行Socket编程(源码):c和c++源码
该资源包整合了多个C/C++的modbustcp开发源程序,为你的开发提供一定思路
Java TCP/IP Socket编程 Java TCP/IP Socket编程 Java TCP/IP Socket编程
跨平台C++ tcp socket 客户端服务端源码 适用于linux window mac系统
VC学习笔记 基于TCP的socket编程
TCP/UDP socket等知识的详细具体又容易理解地学习资料
本文件传输系统采用TCP协议进行通信,实现了windows与linux通信,打破了只能在windows下传输文件的弊端,本程序的编写对通信编程新手有很大的帮助作用,本系统目前只支持windows向linux发送多种类型文件,大文件传输...
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
一个很好用的C++客户端tcp socket deam ,已经用于...由于项目需要,需要使用C++连接服务器socket ,但是搜索了很多资料都没有发现好用的,于是就自己摸索实现了,支持tcp和udp协议,connect 时候自动匹配,支持多线程
两本TCP/IP socket编程书,分别是C语言和Java语言版的。都是文字版的pdf文档。 1. TCP/IP Sockets in Java (2th Edtion) 2. TCP/IP Sockets in C *Series Editor: Michael J. Donahoo
linux unix 环境下的socket编程实例 还有专门给的c++封装库行数! tcp/ip 的通讯实例
SocketTool调试工具官方版是一款网络TCP/UDP通信调试工具。SocketTool调试工具最新版可以有效地帮助网络管理员检测各种网络通信状永久,集成了TCP服务器/客户端、UDP服务器/客户端和UDP广播/组播等功能。SocketTool...
socket(TCP/UDP)编程源码,socket(TCP/UDP)编程源码,socket(TCP/UDP)编程源码
C++开发基于TCPsocket实现的web服务器源码。基于TCP socket实现的支持报文解析并返回响应报文的Web服务器,可以响应多种文件需求并能够处理特定的错误情况 服务器实现及其功能: 1、读取配置文件,为服务器自身设置...
Socket 通信, 设备TCP/IP通信
TCP/UDP socket 调试工具 TCP/UDP socket 调试工具 SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。她可以帮助网络编程人员、网络维护人员检查所...
包含C语言完整的socket简单c/s通信代码,有tcp连接的,也有UDP连接的,有多线程实现还有单线程实现,可供比较。还有domain socket c/s通信简单应用的完整代码 C语言 socket tcp/ip domain socket 代码