91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡(jiǎn)介

基于Linux的C源代碼——一個(gè)簡(jiǎn)單的從服務(wù)器上下載文件的程序 先啟動(dòng)服務(wù)器端 再啟動(dòng)客戶端,在啟動(dòng)客戶端的時(shí)候需要同時(shí)填寫(xiě)服務(wù)器的IP地址 如:./client 127.0.0.1 連接成功之后輸入要下載的文件的文件路徑名 回車(chē)后再輸入在本地機(jī)的存儲(chǔ)路徑及文件名

資源截圖

代碼片段和文件信息

#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);
????}

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


????//把客戶機(jī)的socket和客戶機(jī)的socket地址結(jié)構(gòu)聯(lián)系起來(lái)
????if(?-1?==?bind(client_socket(struct?sockaddr*)&client_addrsizeof(client_addr)))
????{
????????perror(“bind“);
exit(1);
????}
printf(“Bind?Success!\n“);


????//設(shè)置一個(gè)socket地址結(jié)構(gòu)server_addr代表服務(wù)器的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)?//服務(wù)器的IP地址來(lái)自程序的參數(shù)
????{
????????
????????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);
????//向服務(wù)器發(fā)起連接連接成功后client_socket代表了客戶機(jī)和服務(wù)器的一個(gè)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);
????//向服務(wù)器發(fā)送buffer中的數(shù)據(jù)
????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

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????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??使用說(shuō)明.txt

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

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


評(píng)論

共有 條評(píng)論

相關(guān)資源