// 定义ServerCode.cpp: 程序入口
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef WIN32
#include <WinSock2.h>
#include <Windows.h>
#pragma comment (lib, "WSOCK32.LIB")
#endif // WIN32
int main(int argc, char* argv[]) {
#ifdef WIN32
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2, 2);
int ret = WSAStartup(wVersionRequested, &wsaData);
if (ret != 0) {
printf("WSASTART UP FAILED!\a\n");
return -1;
}
#endif // 防止socket版本过高
// 创建服务器socket监听
int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET) {
goto failed;
}
// 配置服务器ip和端口
struct sockaddr_in socket;
socket.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
socket.sin_family = AF_INET;
socket.sin_port = htons(6080);
ret = bind(s, (const struct sockaddr*)&socket, sizeof(socket));
if (ret != 0) {
goto failed;
}
ret = listen(s, 1); //开启监听
while (1) {
// 客户端
struct sockaddr_in c_sockaddr;
int c_sockaddr_len = sizeof(c_sockaddr);
printf("Waiting for client....\n");
int cs = accept(s, (sockaddr*)&c_sockaddr, &c_sockaddr_len);
printf("client ip: %s, client port: %d\n", inet_ntoa(c_sockaddr.sin_addr), ntohs(c_sockaddr.sin_port));
char buf[11];
memset(buf, 0, 11);
recv(cs, buf, 11, 0);
printf("%s\n", buf);
send(cs, buf, 11, 0);
closesocket(cs);
}
failed:
if (s != INVALID_SOCKET) {
closesocket(s);
}
#ifdef WIN32
WSACleanup();
#endif // 清除WSAData
return 0;
}
// 定义ClientCode.cpp: 程序入口
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef WIN32
#include <WinSock2.h>
#include <Windows.h>
#pragma comment (lib, "WSOCK32.LIB")
#endif // WIN32
int main(int argc, char* argv[]) {
#ifdef WIN32
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2, 2);
int ret = WSAStartup(wVersionRequested, &wsaData);
if (ret != 0) {
printf("WSASTART UP FAILED!\a\n");
return -1;
}
#endif // 配置socket版本
int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET) {
goto failed;
}
struct sockaddr_in socket;
socket.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
socket.sin_family = AF_INET;
socket.sin_port = htons(6080);
ret = connect(s, (const sockaddr*)&socket, sizeof(socket));
if (ret != 0) {
goto failed;
}
char buf[11];
memset(buf, 0, 11);
send(s, "金币+1", 11, 0);
printf("%s\n", buf);
recv(s, buf, 11, 0);
printf("从服务器接收到信息: %s\n", buf);
failed:
if (s != INVALID_SOCKET) {
closesocket(s);
s = INVALID_SOCKET;
}
closesocket(s);
#ifdef WIN32
WSACleanup();
#endif // 清理WSADATA
system("pause");
return 0;
}