bool init_Socket(); bool init_Socket() { WSADATA wsadata; if (0 != WSAStartup(MAKEWORD(2, 2), &wsadata)) // windows异步套接字 { printf("启动网络库失败 %d", WSAGetLastError()); return false; } return true; }
SOCKET create_serverSocket(); SOCKET create_serverSocket() { SOCKET fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (INVALID_SOCKET == fd) { printf("create socket error"); return INVALID_SOCKET; } //2.给socket 绑定IP地址和端口号 struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons( PORT); addr.sin_addr.S_un.S_addr = ADDR_ANY; if (SOCKET_ERROR == bind(fd, (struct socketaddr*)&addr, sizeof(addr))) { return INVALID_SOCKET; } //开始监听 listen(fd, 10); return fd; }
SOCKET create_clientSocket(const char* ip) { SOCKET fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (INVALID_SOCKET == fd) { printf("Client socket error"); return INVALID_SOCKET; } //2.给socket 绑定服务IP和端口号 struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.S_un.S_addr = inet_addr(ip);//绑定服务器IP if (INVALID_SOCKET == connect(fd, &addr, sizeof(addr))) { printf("connect error"); return INVALID_SOCKET; } return fd; }
bool close_Socket() { if (0 != WSACleanup()) { printf("关闭网络库失败 %d", WSAGetLastError()); return false; } return true; }
服务器:
int main() { init_Socket(); SOCKET serfd = create_serverSocket(); printf("server creat successed ,wait client connect...\n"); //等待客户端连接 SOCKET clifd = accept(serfd, NULL, NULL); if (clifd == INVALID_SOCKET)\ { printf("连接失败"); } printf("友好的问候一下"); //可以和客户端通信 sendFile(clifd,"../Test.txt"); closesocket(clifd); closesocket(serfd); close_Socket(); return 0; }
客户端:
int main() { init_Socket(); SOCKET fd = create_clientSocket("127.0.0.1"); printf("连接 服务器成功。。。。"); recvFile(fd, "test.txt"); closesocket(fd); close_Socket(); getchar(); return 0; }
具体代码见:https://github.com/w1315/w1315https://github.com/w1315/w1315