VS2013【windows】 尝试简单socket连接

来源:互联网 发布:网络商务英语 编辑:程序博客网 时间:2024/05/20 23:36

只有代码


服务器端:

#ifndef _CRT_SECURE_NO_WARNINGS#define _CRT_SECURE_NO_WARNINGS#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <winsock2.h>#pragma  comment(lib,"ws2_32.lib")#define MAXLINE 4096int main(){SOCKET listenfd;int connfd;struct sockaddr_in servaddr;char buff[MAXLINE + 1];int n;// windows 下需要初始化socketWORD sockVersion = MAKEWORD(2, 2);WSADATA wsaData;if (WSAStartup(sockVersion, &wsaData) != 0){printf("init socket error: %s(error: %d)\n", strerror(errno), errno);system("pause");return 0;}// end socket初始化if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){printf("create socket error: %s(error: %d)\n", strerror(errno), errno);system("pause");return 0;}memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = htonl(INADDR_ANY);servaddr.sin_port = htons(6666);if (bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){printf("bind socket error: %s(errno: %d)\n", strerror(errno), errno);system("pause");return 0;}if (listen(listenfd, 10) == -1){printf("listen socket error: %s(errno: %d)\n", strerror(errno), errno);system("pause");return 0;}printf("======waiting for client's request======\n");if ((connfd = accept(listenfd, NULL, NULL)) == -1){printf("accept socket error: %s(errno: %d)", strerror(errno), errno);system("pause");return 0;}// 接收消息while (true){memset(buff, 0, sizeof(buff));n = recv(connfd, buff, MAXLINE, 0);buff[n] = '\0';printf("recv msg from client: %s\n", buff);}// 释放socketclosesocket(connfd);closesocket(listenfd);system("pause");return 0;}

客户端:

#ifndef _CRT_SECURE_NO_WARNINGS#define _CRT_SECURE_NO_WARNINGS#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <winsock2.h>#include <WS2tcpip.h>#pragma  comment(lib,"ws2_32.lib")int main(){int    sockfd, n;char   recvline[4096], sendline[4096];struct sockaddr_in servaddr;WORD sockVersion = MAKEWORD(2, 2);WSADATA wsaData;if (WSAStartup(sockVersion, &wsaData) != 0){printf("init socket error: %s(error: %d)\n", strerror(errno), errno);system("pause");return 0;}printf("please enter service ipv4 address: ");char IPV4[20];gets(IPV4);if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){printf("create socket error: %s(errno: %d)\n", strerror(errno), errno);system("pause");return 0;}memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(6666);if (inet_pton(AF_INET, IPV4, &servaddr.sin_addr) <= 0){printf("inet_pton error for %s\n", IPV4);system("pause");return 0;}if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0){printf("connect error: %s(errno: %d)\n", strerror(errno), errno);system("pause");return 0;}while (true){printf("send msg to server: \n");memset(sendline, 0, sizeof(sendline));fgets(sendline, 4096, stdin);if (send(sockfd, sendline, strlen(sendline), 0) < 0){printf("send msg error: %s(errno: %d)\n", strerror(errno), errno);system("pause");return 0;}}closesocket(sockfd);system("pause");return 0;}