亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言實現Linux下的socket文件傳輸實例

2020-01-26 15:05:15
字體:
來源:轉載
供稿:網友

本文實例講述了C語言實現Linux下的socket文件傳輸。分享給大家供大家參考。具體如下:

server.c如下:

//////////////////////////////////////服務器代碼/////////////////////////////////////本文件是服務器的代碼#include <netinet/in.h>  // for sockaddr_in#include <sys/types.h>  // for socket#include <sys/socket.h>  // for socket#include <stdio.h>    // for printf#include <stdlib.h>    // for exit#include <string.h>    // for bzero#include <time.h>        //for time_t and time#define HELLO_WORLD_SERVER_PORT 7754#define LENGTH_OF_LISTEN_QUEUE 20#define BUFFER_SIZE 1024int main(int argc, char **argv){//設置一個socket地址結構server_addr,代表服務器internet地址, 端口struct sockaddr_in server_addr;bzero(&server_addr,sizeof(server_addr)); //把一段內存區的內容全部設置為0server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = htons(INADDR_ANY);server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);// time_t now;FILE *stream;//創建用于internet的流協議(TCP)socket,用server_socket代表服務器socketint server_socket = socket(AF_INET,SOCK_STREAM,0);if( server_socket < 0){printf("Create Socket Failed!");exit(1);}//把socket和socket地址結構聯系起來if( bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr))){printf("Server Bind Port : %d Failed!", HELLO_WORLD_SERVER_PORT);exit(1);}//server_socket用于監聽if ( listen(server_socket, LENGTH_OF_LISTEN_QUEUE) ){printf("Server Listen Failed!");exit(1);}while (1) //服務器端要一直運行{struct sockaddr_in client_addr;socklen_t length = sizeof(client_addr);int new_server_socket = accept(server_socket,(struct sockaddr*)&client_addr,&length);if ( new_server_socket < 0){printf("Server Accept Failed!/n");break;}char buffer[BUFFER_SIZE];bzero(buffer, BUFFER_SIZE);strcpy(buffer,"Hello,World! 從服務器來!");strcat(buffer,"/n"); //C語言字符串連接send(new_server_socket,buffer,BUFFER_SIZE,0);bzero(buffer,BUFFER_SIZE);//接收客戶端發送來的信息到buffer中length = recv(new_server_socket,buffer,BUFFER_SIZE,0);if (length < 0){printf("Server Recieve Data Failed!/n");exit(1);}printf("/n%s",buffer);if((stream = fopen("data1","r"))==NULL){printf("The file 'data1' was not opened! /n");exit(1);}elseprintf("The file 'filename' was opened! /n");bzero(buffer,BUFFER_SIZE);int lengsize = 0;while((lengsize = fread(buffer,1,1024,stream)) > 0){printf("lengsize = %d/n",lengsize);if(send(new_server_socket,buffer,lengsize,0)<0){printf("Send File is Failed/n");break;}bzero(buffer, BUFFER_SIZE);}if(fclose(stream))printf("The file 'data' was not closed! /n");exit(1);    //關閉與客戶端的連接close(new_server_socket);    }//關閉監聽用的socketclose(server_socket);return 0;}

client.c如下:

//////////////////////////////////////客戶端代碼/////////////////////////////////////本文件是客戶機的代碼#include <netinet/in.h>  // for sockaddr_in#include <sys/types.h>  // for socket#include <sys/socket.h>  // for socket#include <stdio.h>    // for printf#include <stdlib.h>    // for exit#include <string.h>    // for bzero#include <time.h>        //for time_t and time#include <arpa/inet.h>#define HELLO_WORLD_SERVER_PORT  7754#define BUFFER_SIZE 1024int main(int argc, char **argv){if (argc != 2){printf("Usage: ./%s ServerIPAddress/n",argv[0]);exit(1);}//time_t now;FILE *stream;//設置一個socket地址結構client_addr,代表客戶機internet地址, 端口struct sockaddr_in client_addr;bzero(&client_addr,sizeof(client_addr)); //把一段內存區的內容全部設置為0client_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代表客戶機socketint client_socket = socket(AF_INET,SOCK_STREAM,0);if( client_socket < 0){printf("Create Socket Failed!/n");exit(1);}//把客戶機的socket和客戶機的socket地址結構聯系起來if( bind(client_socket,(struct sockaddr*)&client_addr,sizeof(client_addr))){printf("Client Bind Port Failed!/n");exit(1);}//設置一個socket地址結構server_addr,代表服務器的internet地址, 端口struct sockaddr_in server_addr;bzero(&server_addr,sizeof(server_addr));server_addr.sin_family = AF_INET;if(inet_aton(argv[1],&server_addr.sin_addr) == 0) //服務器的IP地址來自程序的參數{printf("Server IP Address Error!/n");exit(1);}server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);socklen_t server_addr_length = sizeof(server_addr);//向服務器發起連接,連接成功后client_socket代表了客戶機和服務器的一個socket連接if(connect(client_socket,(struct sockaddr*)&server_addr, server_addr_length) < 0){printf("Can Not Connect To %s!/n",argv[1]);exit(1);}char buffer[BUFFER_SIZE];bzero(buffer,BUFFER_SIZE);//從服務器接收數據到buffer中int length = recv(client_socket,buffer,BUFFER_SIZE,0);if(length < 0){printf("Recieve Data From Server %s Failed!/n", argv[1]);exit(1);}printf("/n%s/n",buffer);bzero(buffer,BUFFER_SIZE);bzero(buffer,BUFFER_SIZE);strcpy(buffer,"Hello, World! From Client/n");//向服務器發送buffer中的數據send(client_socket,buffer,BUFFER_SIZE,0);if((stream = fopen("data","w+t"))==NULL){printf("The file 'data' was not opened! /n");}elsebzero(buffer,BUFFER_SIZE);length = 0;while( length = recv(client_socket,buffer,BUFFER_SIZE,0)){if(length < 0){printf("Recieve Data From Server %s Failed!/n", argv[1]);break;}int write_length = fwrite(buffer,sizeof(char),length,stream);if (write_length<length){printf("File is Write Failed/n");break;}bzero(buffer,BUFFER_SIZE); }printf("Recieve File From Server[%s] Finished/n", argv[1]);//關閉 文件fclose(stream);//關閉socketclose(client_socket);return 0;}

希望本文所述對大家的C語言程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久999| 97欧美精品一区二区三区| 一区二区欧美久久| 成人黄色免费网站在线观看| 亚洲人成网站777色婷婷| 国产91色在线|| 国产一区二区免费| 亚洲成人三级在线| 91精品国产综合久久香蕉| 国产成人精品久久亚洲高清不卡| 欧美国产在线电影| 九九热r在线视频精品| 国产精品久久久久久久久久免费| 国产成人福利夜色影视| 黄色一区二区在线| 亚洲自拍欧美色图| 中文字幕在线观看亚洲| 国产亚洲美女久久| 国产伦精品一区二区三区精品视频| 国产精品网址在线| 精品国偷自产在线| 亚洲精品有码在线| 国产乱人伦真实精品视频| 亚洲视频国产视频| 一本大道香蕉久在线播放29| 中文日韩在线视频| 国产精品aaa| 麻豆一区二区在线观看| 青青在线视频一区二区三区| 欧美国产中文字幕| 欧美人与性动交| 欧美黑人极品猛少妇色xxxxx| 国产原创欧美精品| 亚洲性生活视频在线观看| 九九综合九九综合| 国产精品视频yy9099| 国产日韩中文字幕在线| 精品亚洲一区二区三区四区五区| 国产精彩精品视频| 国产精品一二三在线| 亚洲成人激情图| 5252色成人免费视频| 欧美一级大片视频| 日韩中文在线中文网三级| 最近2019年好看中文字幕视频| 国产激情久久久| 亚洲电影中文字幕| 久久在线免费观看视频| 欧美精品video| 成人女保姆的销魂服务| 国产亚洲一区二区精品| 成人精品视频在线| 欧美一级黄色网| 久久免费视频网站| 中文字幕精品久久| 国产福利视频一区| 亚洲精品国产电影| 色先锋久久影院av| 91在线视频九色| 国产欧美日韩专区发布| 日韩美女在线观看一区| 精品亚洲夜色av98在线观看| 秋霞av国产精品一区| 91精品国产91久久久久久最新| 久久人人爽人人爽人人片av高请| 精品呦交小u女在线| 国产91av在线| 最近2019中文字幕mv免费看| 精品视频偷偷看在线观看| 国产69精品99久久久久久宅男| 91在线免费视频| 日韩av观看网址| 成人h视频在线| 欧美色道久久88综合亚洲精品| 77777少妇光屁股久久一区| 国产精品极品尤物在线观看| 97视频人免费观看| 日韩亚洲一区二区| 亚洲成人aaa| 欧美激情一区二区三区高清视频| 最新国产成人av网站网址麻豆| 亚洲男人天堂视频| 国产精品青草久久久久福利99| 亚洲jizzjizz日本少妇| 欧美性猛交xxxx乱大交3| 欧美在线中文字幕| 伦伦影院午夜日韩欧美限制| 亚洲国产欧美精品| 国产精品91一区| 国产精品av在线播放| 亚洲第一区中文字幕| 色综合色综合网色综合| 欧美黑人国产人伦爽爽爽| 日韩精品在线观看一区| 欧美交受高潮1| 日本高清久久天堂| 在线视频欧美日韩精品| 亚洲精品一区二区三区婷婷月| 在线播放日韩欧美| 黄网动漫久久久| 精品美女国产在线| 国产精彩精品视频| 久久九九有精品国产23| 成人性生交xxxxx网站| 中文字幕精品一区二区精品| 欧美日韩亚洲一区二区三区| 成年人精品视频| 久久久久中文字幕2018| 久久99久久亚洲国产| 一夜七次郎国产精品亚洲| 国产亚洲欧美日韩美女| 国产在线视频91| 亚洲a成v人在线观看| 最好看的2019年中文视频| 亚洲福利视频专区| www欧美xxxx| 欧美激情一区二区久久久| 亚洲韩国欧洲国产日产av| 2020欧美日韩在线视频| 日韩av免费一区| 亚洲毛片在线观看| 欧美国产第二页| 亚洲午夜久久久久久久| 亚洲香蕉成视频在线观看| 日韩成人激情影院| 国产精品精品国产| 俺去亚洲欧洲欧美日韩| 97欧美精品一区二区三区| 成人久久久久久久| 久久久久久久影视| 97视频在线观看视频免费视频| 91亚洲精品视频| 久久偷看各类女兵18女厕嘘嘘| 久久夜色精品国产亚洲aⅴ| 亚洲一品av免费观看| 国产一区欧美二区三区| 亚洲一区二区三区乱码aⅴ| 精品国偷自产在线视频99| 精品香蕉一区二区三区| 欧美一级片在线播放| 国产专区精品视频| 日韩在线视频国产| 欧洲永久精品大片ww免费漫画| 国产精品v片在线观看不卡| 91国语精品自产拍在线观看性色| 欧美亚洲另类制服自拍| 欧美夜福利tv在线| 久久影院免费观看| 欧美性猛交xxxx黑人猛交| 国产成人精彩在线视频九色| 精品中文字幕在线2019| 色偷偷偷综合中文字幕;dd| 黄色成人在线播放| 日本中文字幕不卡免费| 国产精品普通话| 色在人av网站天堂精品| www.亚洲男人天堂| 国产一区二区三区丝袜| 日韩一区二区精品视频| 久久久久国产精品一区| 欧美老女人性视频| 欧美激情亚洲综合一区| 91久久精品一区| 久久久久久久999精品视频|