TCP通信
/-------------------------------工具包--------------/ #pragma once #include<stdio.h> #include<unistd.h> #include<string.h> #include<stdlib.h> #include<netinet/in.h> #define SERVER_IP "127.0.0.1" #define SERVER_PORT 9090 #define MAX_BUFFER_SIZE 255 #define LISTEN_QUEUE_SIZE 5 void Perror(char *str) { perror(str); exit(1); }
#include"utili.h" int main() { int sockSer = socket(AF_INET, SOCK_STREAM, 0); if(sockSer == -1) Perror("socket"); struct sockaddr_in addrSer, addrCli; addrSer.sin_family = AF_INET; addrSer.sin_port = htons(SERVER_PORT); addrSer.sin_addr.s_addr = inet_addr(SERVER_IP); socklen_t len = sizeof(struct sockaddr); int res = bind(sockSer, (struct sockaddr*)&addrSer, len); if(res == -1) Perror("bind"); res = listen(sockSer, LISTEN_QUEUE_SIZE); if(res == -1) Perror("listen"); int sockConn; sockConn = accept(sockSer, (struct sockaddr*)&addrCli, &len); if(sockConn == -1) { printf("Server Accept Client Connect Fail.\n"); exit(1); } else { printf("Server Accept Client Connect OK.\n"); } char sendbuf[MAX_BUFFER_SIZE]; char recvbuf[MAX_BUFFER_SIZE]; while(1) { printf("Ser:>"); scanf("%s",sendbuf); send(sockConn, sendbuf, strlen(sendbuf)+1, 0); recv(sockConn, recvbuf, MAX_BUFFER_SIZE, 0); printf("Cli:>%s\n",recvbuf); } close(sockSer); return 0; }
#include"utili.h" int main() { int sockCli = socket(AF_INET, SOCK_STREAM, 0); if(sockCli == -1) Perror("socket"); struct sockaddr_in addrSer; addrSer.sin_family = AF_INET; addrSer.sin_port = htons(SERVER_PORT); addrSer.sin_addr.s_addr = inet_addr(SERVER_IP); socklen_t len = sizeof(struct sockaddr); int res = connect(sockCli, (struct sockaddr*)&addrSer, len); if(res == -1) { printf("Client Connect Server Fail.\n"); exit(1); } else { printf("Client Connect Server OK.\n"); } char sendbuf[MAX_BUFFER_SIZE]; char recvbuf[MAX_BUFFER_SIZE]; while(1) { recv(sockCli, recvbuf, MAX_BUFFER_SIZE, 0); printf("Ser:>%s\n",recvbuf); printf("Cli:>"); scanf("%s",sendbuf); send(sockCli, sendbuf, strlen(sendbuf)+1, 0); } close(sockCli); return 0; }