logo资料库

socket通信代码.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
SOCKADDR_IN serversockaddr, clientsockaddr; SOCKET serversock, clientsock; WSADATA data; char inf[50]; char ans[50]; int len; int n, choice, num; n = WSAStartup(MAKEWORD(2,2), &data); len = sizeof(clientsockaddr); printf("server:\n"); printf("====================================\n"); if (n != 0) { printf("Initialize error!\n"); exit(1); } memset(&serversockaddr, 0, sizeof(serversockaddr)); serversockaddr.sin_family = AF_INET; serversockaddr.sin_port = htons(PORT); serversockaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); serversock = socket(AF_INET, SOCK_STREAM, 0); if (serversock == INVALID_SOCKET) { printf("Creat socket error!\n"); WSACleanup(); exit(1); } n = bind(serversock, (LPSOCKADDR) &serversockaddr, if (n == SOCKET_ERROR) { sizeof(serversockaddr)); printf("bind error!\n"); exit(1); } n = listen(serversock, 10); if (n == SOCKET_ERROR) { //client #include #include #include #define PORT 9400 int main() { printf("listen error!\n"); exit(1); } choice = 1; printf("Waiting connect.......\n"); clientsock = accept(serversock, (LPSOCKADDR) &clientsockaddr, &len); printf("Client %s connected.\n", inet_ntoa(clientsockaddr.sin_addr)); while (choice) { num = recv(clientsock, inf, 50, 0); if ((num == 0) || (num == SOCKET_ERROR)) { printf("Client stoped.\n"); exit(1); } printf("Received: %s\n", inf); num = send(clientsock, ans, strlen(ans) + 1, 0); if (num != (int) strlen(ans) + 1) { printf("Send error!Stoped!"); exit(1);
} } return 0; } //sever #include #include #include #define PORT 9400 int main() { WSADATA data; SOCKADDR_IN serversock; SOCKET clientsock, serversocket; char serverIP[100]; char inf[50]; char ans[50]; int n, choice, num; printf("Client:\n"); printf("========================================\n"); printf("Pleas enter the IP of server:"); gets(serverIP); n = WSAStartup(MAKEWORD(1, 1), &data); if (n != 0) { printf("Initialize Winsock error!\n"); exit(1); } serversock.sin_addr.S_un.S_addr = inet_addr(serverIP); serversock.sin_port = htons(PORT); serversock.sin_family = AF_INET; clientsock = socket(AF_INET, SOCK_STREAM, 0); if (clientsock == INVALID_SOCKET) { printf("Create socket error!\n"); exit(1); } serversocket = socket(AF_INET, SOCK_STREAM, 0); n = bind(serversocket, (LPSOCKADDR) &serversock, sizeof(serversock)); n = connect(clientsock, (LPSOCKADDR) &serversock, sizeof(serversock)); if (n == SOCKET_ERROR) { printf("Connect to %s error!\n", serverIP); exit(1); printf("Connected!\n"); } else { } choice = 1; while (choice) { printf("Please input information:"); gets(inf); num = send(clientsock, inf, strlen(inf) + 1, 0); if (num != (int) strlen(inf) + 1) { printf("Send error!Stoped!"); exit(1); }
num = recv(clientsock, ans, 50, 0); if ((num == 0) || (num == SOCKET_ERROR)) { printf("Server stoped.\n"); exit(1); } printf("%s\n", ans); printf("Continue to send (y/n):"); if (getchar() == 'n') getchar(); choice = 0; } return 0; }
分享到:
收藏