linux 下C语言实现文件传输的简单实例
实例来自互联网,这段测试代码实现了基本的文件传输原理,没有实现错误处理。
//////////////////////////////////////////////////////////////////////////////////////
// file_server.c文件传输顺序服务器示例
//////////////////////////////////////////////////////////////////////////////////////
//本文件是服务器的代码
#in elude
#in elude
#in elude
#i nclude
#i nclude
#in clude
/*
#in clude
#in clude
#in clude
#in clude
*/
// for sockaddr_ in
// for socket
// for socket
// for printf
// for exit
// for bzero
#defi ne HELLO_WORLD_SERVER_PORT
#defi ne LENGTH_OF_LISTEN_QUEUE
6666
20
#defi ne BUFFER_SIZE 1024
#define FILE NAME MAX SIZE 512
int main (i nt argc, char **argv)
{
//设置一个socket 地址结构server_addr,代表服务器in ternet 地址,端口
struct sockaddr_ in server_addr;
bzer o(&server_addr,sizeof(server_addr)); //
把一段内存区的内容全部设置为0
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = hto ns(INADDR_ANY);
server_addr.sin_port = hton s(HELLO_WORLD_SERVER_PORT);
socket//创建用于in ternet的流协议(TCP)socket, 用server_socket 代表服务器
socket
int server_socket = socket(PF_INET,SOCK_STREAM,0);
if( server_socket < 0)
{
prin tf("Create Socket Failed!");
exit(1);
}
//把socket和socket地址结构联系起来
if( bin d(server_socket,(struct sockaddr* )& server_addr,sizeof(server_addr)))
{
prin tf("Server Bi nd Port : %d Failed!", HELLO_WORLD_SERVER_PORT); exit(1);
}
//server_socket 用于监听
if ( liste n( server_socket, LENGTH_OF_LISTEN_QUEUE))
{
printf("Server Listen Failed!");
exit(1);
}
while (1) //服务器端要一直运行
{
//定义客户端的 socket 地址结构client_addr
struct sockaddr_i n clie nt_addr;
sockle n_t len gth = sizeof(clie nt_addr);
//接受一个到server_socket 代表的socket的一个连接
//如果没有连接请求,就等待到有连接请求--这是accept函数的特性
//accept函数返回一个新的 socket,这个 socket(new_server_socket)用于同连
接到的客户的通信
〃n ew_server_socket代表了服务器和客户端之间的一个通信通道
//accept函数把连接到的客户端信息填写到客户端的socket地址结构
clie nt_addr中
int n ew_server_socket = accept(server_socket,(struct
sockaddr*) &clie nt_addr,&len gth