您的位置:首页 > 理论基础 > 计算机网络

VC+Socket 网络通讯示例

2012-12-30 22:47 148 查看


VC+Socket 网络通讯示例

博客分类:

Socket

SocketVC++Windows

Cpp代码


VC+Socket 网络通讯示例 收藏



服务器端示例代码



#include <stdio.h>

#include <winsock.h>

#include <windows.h>



#define SERVER_SOCKET_ERROR 1

#define SOCKET_OK 0



#pragma comment(lib, "wsock32.lib")



void socketError(char*);



int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance,

LPSTR lpCmdLine, int nShow)

{

WORD sockVersion;

WSADATA wsaData;

int rVal;



sockVersion = MAKEWORD(1,1);

//start dll

WSAStartup(sockVersion, &wsaData);



//create socket

SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);



if(s == INVALID_SOCKET)

{

socketError("Failed socket()");

WSACleanup();

return SERVER_SOCKET_ERROR;

}



//fill in sockaddr_in struct



SOCKADDR_IN sin;

sin.sin_family = PF_INET;

sin.sin_port = htons(8888);

sin.sin_addr.s_addr = INADDR_ANY;



//bind the socket

rVal = bind(s, (LPSOCKADDR)&sin, sizeof(sin));

if(rVal == SOCKET_ERROR)

{

socketError("Failed bind()");

WSACleanup();

return SERVER_SOCKET_ERROR;

}



//get socket to listen

rVal = listen(s, 2);

if(rVal == SOCKET_ERROR)

{

socketError("Failed listen()");

WSACleanup();

return SERVER_SOCKET_ERROR;

}



//wait for a client

SOCKET client;



client = accept(s, NULL, NULL);



if(client == INVALID_SOCKET)

{

socketError("Failed accept()");

WSACleanup();

return SERVER_SOCKET_ERROR;

}



//close process

closesocket(client);

closesocket(s);



WSACleanup();



return SOCKET_OK;

};



void socketError(char* str)

{

MessageBox(NULL, str, "SOCKET ERROR", MB_OK);

};



客户端示例代码



#include <windows.h>

#include <winsock.h>



#pragma comment(lib, "wsock32.lib")



#define CS_ERROR 1

#define CS_OK 0



void sError(char*);



int WINAPI WinMain(HINSTANCE hHinst, HINSTANCE hPrevHinst, LPSTR lpCmdLine,

int nShow)

{



WORD version;

WSADATA wsaData;

int rVal=0;



version = MAKEWORD(1,1);



WSAStartup(version,(LPWSADATA)&wsaData);



LPHOSTENT hostEntry;



//store information about the server

hostEntry = gethostbyname("hibbert");



if(!hostEntry)

{

sError("Failed gethostbyname()");

//WSACleanup();

return CS_ERROR;

}



//create the socket

SOCKET theSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);



if(theSocket == SOCKET_ERROR)

{

sError("Failed socket()");

return CS_ERROR;

}



//Fill in the sockaddr_in struct

SOCKADDR_IN serverInfo;



serverInfo.sin_family = PF_INET;

serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);



serverInfo.sin_port = htons(8888);



rVal=connect(theSocket,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));

if(rVal==SOCKET_ERROR)

{

sError("Failed connect()");

return CS_ERROR;

}



closesocket(theSocket);

WSACleanup();

MessageBox(NULL, "Connection was made", "SOCKET", MB_OK);

return CS_OK;

}



void sError(char *str)

{

MessageBox(NULL, str, "SOCKET ERROR", MB_OK);

WSACleanup();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: