xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

基于Linux的C源代碼——一個簡單的從服務器上下載文件的程序 先啟動服務器端 再啟動客戶端,在啟動客戶端的時候需要同時填寫服務器的IP地址 如:./client 127.0.0.1 連接成功之后輸入要下載的文件的文件路徑名 回車后再輸入在本地機的存儲路徑及文件名

資源截圖

代碼片段和文件信息

#include?????//?for?sockaddr_in
#include?????//?for?socket
#include?????//?for?socket
#include?????????//?for?printf
#include?????????//?for?exit
#include?????????//?for?bzero
#include?
#include?
#include?
#include?
#include?
#include?


void?err_sys(const?char*?...);
static?void?err_doit(int?const?char?*va_list);
long?get_filesize(char?*filename);


#define?HELLO_WORLD_SERVER_PORT????6789?
#define?BUFFER_SIZE?1024
#define?FILE_NAME_MAX_SIZE?512
#define?MAXLINE?4069
fd_set???rdfds;


int
main(int?argc?char?**argv)
{
????if?(argc?!=?2)
????{
????????printf(“Usage:?./%s?ServerIPAddress\n“argv[0]);
????????exit(1);
????}

????//設置一個socket地址結構client_addr代表客戶機internet地址?端口
????struct?sockaddr_in?client_addr;
????bzero(&client_addrsizeof(client_addr));?//把一段內存區的內容全部設置為0
????client_addr.sin_family?=?AF_INET;????//internet協議族
????client_addr.sin_addr.s_addr?=?htons(INADDR_ANY);//INADDR_ANY表示自動獲取本機地址
????client_addr.sin_port?=?htons(0);????//0表示讓系統自動分配一個空閑端口
????//創建用于internet的流協議(TCP)socket用client_socket代表客戶機socket
????int?client_socket?=?socket(AF_INETSOCK_STREAM0);
????if(?client_socket?????{
????????perror(“socket“);
exit(1);
????}
printf(“Socket?is?Createed!\n“);


????//把客戶機的socket和客戶機的socket地址結構聯系起來
????if(?-1?==?bind(client_socket(struct?sockaddr*)&client_addrsizeof(client_addr)))
????{
????????perror(“bind“);
exit(1);
????}
printf(“Bind?Success!\n“);


????//設置一個socket地址結構server_addr代表服務器的internet地址?端口
????struct?sockaddr_in?server_addr;
????bzero(&server_addrsizeof(server_addr));
????server_addr.sin_family?=?AF_INET;
????if(inet_aton(argv[1]&server_addr.sin_addr)?==?0)?//服務器的IP地址來自程序的參數
????{
????????
????????perror(“inet_aton“);
exit(1);
????}
printf(“Inet_aton?Success!\n“);


????server_addr.sin_port?=?htons(HELLO_WORLD_SERVER_PORT);
????socklen_t?server_addr_length?=?sizeof(server_addr);
????//向服務器發起連接連接成功后client_socket代表了客戶機和服務器的一個socket連接
????if(-1?==?connect(client_socket(struct?sockaddr*)&server_addr?server_addr_length))
????{
????????perror(“connect“);
// printf(“Can?Not?Connect?To?%s!\n“argv[1]);
????????exit(1);
????}
printf(“Connected!\n“);


????char?file_name[FILE_NAME_MAX_SIZE+1];
char?loc_file_name[FILE_NAME_MAX_SIZE+1];
????bzero(file_name?FILE_NAME_MAX_SIZE+1);
bzero(loc_file_nameFILE_NAME_MAX_SIZE+1);
????printf(“Please?Input?File?Name?On?Server:\t“);
????scanf(“%s“?file_name);
????
????char?buffer[BUFFER_SIZE];
????bzero(bufferBUFFER_SIZE);
????strncpy(buffer?file_name?strlen(file_name));
printf(“send?the?file?name?is?:%s\n“buffer);
????//向服務器發送buffer中的數據
????if(-1?==?send(client_socketbufferBUFFER_SIZE0))
{
perror(“send“);
exit(1);
}

printf(“Please?Input?File?Name?On?location:\t“);
????scanf(“%s“?loc_file_name);
FILE?*wstr

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3945??2009-05-05?15:31??ftp——1.0\test_client.c

?????文件???????4807??2009-05-05?15:00??ftp——1.0\test_server.c

?????目錄??????????0??2009-05-05?15:34??ftp——1.0

?????文件???????8769??2009-05-07?11:26??test_client

?????文件??????10019??2009-05-06?14:44??test_server

?????文件????????183??2009-05-07?12:00??使用說明.txt

-----------?---------??----------?-----??----

????????????????27723????????????????????6


評論

共有 條評論