资源简介
LINUX下的一个多线程的服务器和客户端的网络传输程序,初学者可以作为参考。
LINUX下的一个多线程的服务器和客户端的网络传输程序,初学者可以作为参考
代码片段和文件信息
/*
Very simple file transferring client.
Copyright (C) 2004-2006 Li Suke School of Software and Microelectronics
Peking University
This is free software; you can redistribute it and/or
modify it freely.
This software is distributed in the hope that it will be useful
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include “rw.h“
int main(int argc char *argv[]){
int sockfd;
int conn_ret;
struct sockaddr_in servaddr;
char cmd_buf[MAX_LEN];
char recvbuf[MAX_LEN];
int error_flag;
int len = MAX_LEN;
int file_fd;
int dot_number;
int total_len = 0;
if(argc != 5){
printf(“Usage: fileclient \n“);
return 0;
}
if((sockfd = socket(AF_INETSOCK_STREAM0)) == -1){
perror(“sock“);
exit(1);
}
bzero(&servaddrsizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(atoi(argv[2]));
inet_pton(AF_INETargv[1]&servaddr.sin_addr);
conn_ret = connect(sockfd(struct sockaddr *)&servaddrsizeof(servaddr));
if(conn_ret == -1){
perror(“connect“);
}
file_fd = open(argv[4]O_CREAT | O_WRONLY);
if(file_fd == -1){
perror(“open“);
exit(1);
}
len = strlen(argv[3])+3;
snprintf(cmd_buflen“%s\r\n“argv[3]);
if((error_flag = writeall(sockfdcmd_buf&len))==-1){
exit(1);
}
len = MAX_LEN;
printf(“\nfile is transferring:\n“);
while ((error_flag = readall(sockfdrecvbuf&len))==0){
if(len == 0){
printf(“\nClient has received file!\n“);
break;
}
printf(“.“);
printf(“read length is %d\n“len);
dot_number++;
if((dot_number % DOT_PERIOD) ==0){
printf(“\n“);
dot_number = 0;
}
total_len+=len;
if(writeall(file_fdrecvbuf&len) == -1){
printf(“\nclient has some error when receive the file!\n“);
break;
}
len = MAX_LEN;
}
printf(“\nRecevied %d bytes\n“total_len);
close(file_fd);
close(sockfd);
return;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3757 2006-06-16 10:03 pthreadfile\rw.c
文件 288 2006-06-16 10:03 pthreadfile\rw.h
文件 252 2006-06-16 10:03 pthreadfile\Makefile
文件 2415 2006-06-16 10:03 pthreadfile\fileclient.c
文件 2575 2006-06-16 10:03 pthreadfile\fileserver.c
目录 0 2006-06-16 10:03 pthreadfile
----------- --------- ---------- ----- ----
9505 7
- 上一篇:课程设计_高速公路收费系统
- 下一篇:进度条显示导出文件进度
相关资源
- tcpdump-4.9.0-5.el7.x86_64.rpm
- Linux C利用多进程或多线程模拟实现生
- linux下用freetype2显示汉字
- lsof-4.82-4.el6.x86_64.rpm
- Linux操作系统设计实践报告一
- 等保主机安全基线合规--配置指导li
- linux ls命令 源代码
- linux 系统调用 实现文件复制
- linux kernel系统函数调用层次图
- 5个qt多线程
- linux Ubuntu系统网络调试助手.rar
- LINUX日常代码集锦
- Using 9P2000 Under Linux
- adv7610驱动
- 打造linux下的Source Insight
- iperf-3.3.tar.gz
- Linux 下的exfat文件系统驱动,内核版本
- Linux 个人防火墙的设计与实现课程设
- zmodem协议linux下的源代码
- qt字符设备驱动,简单易学
- 官网JDK1.7.0Linux_32位.txt
- grub4dos-linux
- uclinux详细的中文学习资料
- Qt5.X的linuxfb平台源码补丁包
- LINUX设备驱动开发详解带书签全套资料
- linux下的tftp server端的源码
- 操作系统课程设计-实现系统状态监测
- FTP客户端C源码(Linux版)
- linux入侵检测源代码简单
- Qt 多线程访问同一个变量
评论
共有 条评论