c语言tcp收发代码
时间: 2023-08-01 17:10:46 浏览: 50
以下是一个简单的C语言TCP收发代码示例,用于在客户端和服务器之间交换数据:
服务器端代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <strings.h>
#define PORT 8080
#define MAXLINE 1024
int main()
{
int listenfd, connfd, n;
struct sockaddr_in servaddr, cliaddr;
socklen_t len;
char buffer[MAXLINE];
listenfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
listen(listenfd, 10);
printf("Server listening on port %d\n", PORT);
while(1)
{
len = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr*)&cliaddr, &len);
n = recv(connfd, buffer, MAXLINE, 0);
buffer[n] = '\0';
printf("Received message: %s\n", buffer);
send(connfd, buffer, n, 0);
close(connfd);
}
return 0;
}
```
客户端代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <strings.h>
#include <string.h>
#define PORT 8080
#define MAXLINE 1024
int main(int argc, char **argv)
{
int sockfd, n;
struct sockaddr_in servaddr;
char sendline[MAXLINE], recvline[MAXLINE];
if(argc != 2)
{
printf("Usage: %s <IP address>\n", argv[0]);
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
printf("Enter message to send: \n");
fgets(sendline, MAXLINE, stdin);
send(sockfd, sendline, strlen(sendline), 0);
n = recv(sockfd, recvline, MAXLINE, 0);
recvline[n] = '\0';
printf("Received message: %s\n", recvline);
close(sockfd);
return 0;
}
```
这里只是一个简单的示例,实际应用中需要考虑更多的错误处理和安全问题。