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();
}
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();
}