网络编程传输文件的源代码
时间: 2023-04-02 12:05:07 浏览: 138
以下是一个简单的网络编程传输文件的源代码,仅供参考:
服务端代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <fcntl.h>
#define PORT 808
#define MAXLINE 1024
int main() {
int sockfd, connfd;
struct sockaddr_in servaddr, cliaddr;
char buffer[MAXLINE];
char filename[MAXLINE];
int n;
sockfd = socket(AF_INET, SOCK_STREAM, );
if (sockfd == -1) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}
memset(&servaddr, , sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = INADDR_ANY;
servaddr.sin_port = htons(PORT);
if (bind(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) {
perror("bind failed");
exit(EXIT_FAILURE);
}
if (listen(sockfd, 5) == -1) {
perror("listen failed");
exit(EXIT_FAILURE);
}
while (1) {
socklen_t len = sizeof(cliaddr);
connfd = accept(sockfd, (struct sockaddr *)&cliaddr, &len);
if (connfd == -1) {
perror("accept failed");
exit(EXIT_FAILURE);
}
n = read(connfd, filename, MAXLINE);
if (n == -1) {
perror("read failed");
exit(EXIT_FAILURE);
}
filename[n] = '\';
int fd = open(filename, O_RDONLY);
if (fd == -1) {
perror("open failed");
exit(EXIT_FAILURE);
}
while ((n = read(fd, buffer, MAXLINE)) > ) {
if (write(connfd, buffer, n) == -1) {
perror("write failed");
exit(EXIT_FAILURE);
}
}
close(fd);
close(connfd);
}
close(sockfd);
return ;
}
```
客户端代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT 808
#define MAXLINE 1024
int main(int argc, char *argv[]) {
int sockfd;
struct sockaddr_in servaddr;
char buffer[MAXLINE];
char *filename;
int n;
if (argc != 3) {
printf("usage: %s <IP address> <filename>\n", argv[]);
exit(EXIT_FAILURE);
}
filename = argv[2];
sockfd = socket(AF_INET, SOCK_STREAM, );
if (sockfd == -1) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}
memset(&servaddr, , sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr(argv[1]);
servaddr.sin_port = htons(PORT);
if (connect(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) {
perror("connect failed");
exit(EXIT_FAILURE);
}
if (write(sockfd, filename, strlen(filename)) == -1) {
perror("write failed");
exit(EXIT_FAILURE);
}
while ((n = read(sockfd, buffer, MAXLINE)) > ) {
if (write(STDOUT_FILENO, buffer, n) == -1) {
perror("write failed");
exit(EXIT_FAILURE);
}
}
close(sockfd);
return ;
}
```
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)