VS C语言中如何将com1接收到的数据发送给com2还请指导一下
1条回答 默认 最新
dmm128073411 2023-01-06 17:07关注com1和com2是什么,能不能说详细一点
网络编程可以实现服务器端
#include <stdio.h> #include <string.h> #include <stdbool.h> #include <winsock2.h> #define PORT 8888 #define BUFFER_SIZE 4196 const char* kExitFlag = "exit"; int main() { WORD winsock_version = MAKEWORD(2,2); WSADATA wsa_data; if (WSAStartup(winsock_version, &wsa_data) != 0) { printf("Failed to init socket dll!\n"); return 1; } SOCKET server_socket= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (server_socket == INVALID_SOCKET) { printf("Failed to create server socket!\n"); return 2; } struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.S_un.S_addr = INADDR_ANY; if (bind(server_socket, (LPSOCKADDR)&server_addr, sizeof(server_addr)) == SOCKET_ERROR) { printf("Failed to bind port!\n"); return 3; } if (listen(server_socket, 10)) { printf("Failed to listen!\n"); return 4; } struct sockaddr_in client_addr; int client_addr_len = sizeof(client_addr); printf("Wait for connecting...\n"); SOCKET client_socket = accept(server_socket, (SOCKADDR*)&client_addr, &client_addr_len); if (client_socket == INVALID_SOCKET) { printf("Failed to accept!\n"); return 5; } printf("Succeed to receive a connection: %s\n" , inet_ntoa(client_addr.sin_addr)); char recv_buf[BUFFER_SIZE+1]; while (true) { int ret = recv(client_socket, recv_buf, BUFFER_SIZE, 0); if (ret < 0) { printf("Failed to receive data!\n"); break; } recv_buf[ret]=0; // correctly ends received string printf("Receive from Client: \"%s\" \n", recv_buf); if (strcmp(kExitFlag,recv_buf)==0) { printf("Exit!\n"); } const char* send_data = "Hello, Tcp Client!"; send(client_socket, send_data, strlen(send_data), 0); } closesocket(client_socket); closesocket(server_socket); WSACleanup(); return 0; }客户端
#include <stdio.h> #include <string.h> #include <stdbool.h> #include <winsock2.h> #define PORT 8888 char SERVER_IP[]; #define BUFFER_SIZE 4196 const char* kExitFlag = "exit"; int main() { // 初始化socket dll。 WORD winsock_version = MAKEWORD(2,2); WSADATA wsa_data; if (WSAStartup(winsock_version, &wsa_data) != 0) { printf("Failed to init socket!\n"); return 1; } SOCKET client_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (client_socket == INVALID_SOCKET) { printf("Failed to create server socket!\n"); return 2; } printf("please scanf the server IP PORT"); scanf("%s",&SERVER_IP); printf("%s",SERVER_IP); struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.S_un.S_addr = inet_addr(SERVER_IP); if (connect(client_socket, (LPSOCKADDR)&server_addr, sizeof(server_addr)) == SOCKET_ERROR) { printf("Failed to connect server: %ld !\n", GetLastError()); return 3; } char recv_data[BUFFER_SIZE+1]; while (true) { char data[BUFFER_SIZE+1]; printf("Input data: "); scanf("%s",data); if (send(client_socket, data, strlen(data), 0) < 0) { printf("Failed to send data!\n"); break; } int ret = recv(client_socket, recv_data, BUFFER_SIZE, 0); if (ret < 0) { printf("Failed to receive data!\n"); break; } recv_data[ret]=0; // correctly ends received string printf("Receive data from server: \"%s\"\n",recv_data); if (strcmp(data,kExitFlag)==0) { printf("Exit!\n"); break; } } closesocket(client_socket); WSACleanup(); return 0; }效果如图:
解决 无用评论 打赏 举报 编辑记录