日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

C语言N台服务器通信,使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序 ....

發布時間:2025/3/21 linux 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言N台服务器通信,使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序 .... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include */

#define HELLO_WORLD_SERVER_PORT??? 6666

#define BUFFER_SIZE 1024

#define FILE_NAME_MAX_SIZE 512

int main(int argc, char **argv)

{

if (argc != 2)

{

printf("Usage: ./%s ServerIPAddress/n",argv[0]);

exit(1);

}

//創建用于internet的流協議(TCP)socket,用client_socket代表客戶機socket

int client_socket = socket(AF_INET,SOCK_STREAM,0);

if( client_socket < 0)

{

printf("Create Socket 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 file_name[FILE_NAME_MAX_SIZE+1];

bzero(file_name, FILE_NAME_MAX_SIZE+1);

printf("Please Input File Name On Server:/t");

scanf("%s", file_name);

char buffer[BUFFER_SIZE];

bzero(buffer,BUFFER_SIZE);

strncpy(buffer, file_name, strlen(file_name)>BUFFER_SIZE?BUFFER_SIZE:strlen(file_name));

//向服務器發送buffer中的數據

send(client_socket,buffer,BUFFER_SIZE,0);

//??? int fp = open(file_name, O_WRONLY|O_CREAT);

//??? if( fp < 0 )

FILE * fp = fopen(file_name,"w");

if(NULL == fp )

{

printf("File:/t%s Can Not Open To Write/n", file_name);

exit(1);

}

//從服務器接收數據到buffer中

bzero(buffer,BUFFER_SIZE);

int 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 = write(fp, buffer,length);

int write_length = fwrite(buffer,sizeof(char),length,fp);

if (write_length{

printf("File:/t%s Write Failed/n", file_name);

break;

}

bzero(buffer,BUFFER_SIZE);

}

printf("Recieve File:/t %s From Server[%s] Finished/n",file_name, argv[1]);

close(fp);

//關閉socket

close(client_socket);

return 0;

}

總結

以上是生活随笔為你收集整理的C语言N台服务器通信,使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序 ....的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。