WEB开发网
开发学院软件开发C++ 简单的Socket程序传一个字符串 阅读

简单的Socket程序传一个字符串

 2012-05-15 09:52:40 来源:WEB开发网   
核心提示: 简单服务器#include <winsock2.h>#pragma comment(lib,"WS2_32.lib")WSADATA wsd;static UINT port=12345;UINT Listen(LPVOID pParam){SOCKET sServer,sClient

 简单服务器

#include <winsock2.h>
#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
static UINT port=12345;
UINT Listen(LPVOID pParam)
{
	SOCKET sServer,sClient;
	char buf[1024];
	int retVal;
	if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
	{
		return -1;//失败
	}
	sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	if(INVALID_SOCKET==sServer)
	{
		WSACleanup();
		return -1;//创建套接字失败
	}
	SOCKADDR_IN addrServ;
	addrServ.sin_family=AF_INET;
	addrServ.sin_port=htons((short)pParam);
	addrServ.sin_addr.s_addr=INADDR_ANY;
	retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
	if(SOCKET_ERROR==retVal)
	{
		closesocket(sServer);
		WSACleanup();
		return -1;//绑定套接字失败
	}
	retVal=listen(sServer,1);
	if(SOCKET_ERROR==retVal)
	{
		closesocket(sServer);
		WSACleanup();
		return -1;//开始监听失败
	}
	sockaddr_in addrClient;
	int addrClientlen=sizeof(addrClient);
	sClient=accept(sServer,(sockaddr FAR*)&addrClient,&addrClientlen);
	if(INVALID_SOCKET==sClient)
	{
		closesocket(sServer);
		WSACleanup();
		return -1;//开始接受客户端连接失败
	}
	ZeroMemory(buf,sizeof(buf));
	retVal=recv(sClient,buf,sizeof(buf),0);
	if(SOCKET_ERROR==retVal)
	{
		closesocket(sServer);
		closesocket(sClient);
		WSACleanup();
		return -1;//接收数据失败
	}
	CString sMessage(buf);
	closesocket(sServer);
	closesocket(sClient);
	WSACleanup();
	return 0;
}
CWinThread *pThread=AfxBeginThread(Listen,&port);

简单客户端

#include <winsock2.h>
#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET sHost;
SOCKADDR_IN servAddr;
char buf[10240];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
	return -1;//失败
}
sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sHost)
{
	WSACleanup();
	return -1;//创建套接字失败
}
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servAddr.sin_port=htons((short)12345);
int nServAddlen=sizeof(servAddr);
retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));
if(SOCKET_ERROR==retVal) {
	closesocket(sHost);
	WSACleanup();
	return -1;//连接服务器失败
}
ZeroMemory(buf,sizeof(buf));
strcpy(buf,"Hello World!");
retVal=send(sHost,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
	closesocket(sHost);
	WSACleanup();
	return -1;//向服务器发送数据失败
}
closesocket(sHost);
WSACleanup();

Tags:简单 Socket 程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接