- 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();
- }
VC+Socket 网络通讯示例
最新推荐文章于 2019-09-24 21:31:44 发布