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语言文件传输顺序服务器和客户端示例程序 ....的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言计算除法一位小数点,高精度除法小数
- 下一篇: c语言case后加3 5,10.程序流程