我想類似的東西&我的客戶端代碼看起來像這樣
static void send_file(char *ipAddress, char *filename)
{
struct sockaddr_in serverAddr;
int skt;
uint32_t addr_size;
uint32_t sz;
int32_t sent_bytes;
FILE *fp;
if (inet_pton(AF_INET, ipAddress, &(serverAddr.sin_addr))){
skt = socket(PF_INET, SOCK_STREAM, 0);
serverAddr.sin_family = AF_INET;
}
else {
inet_pton(AF_INET6, ipAddress, &(serverAddr.sin_addr));
skt = socket(PF_INET6, SOCK_STREAM, 0);
serverAddr.sin_family = AF_INET6;
}
serverAddr.sin_port = htons(7891);
memset(serverAddr.sin_zero, '\0', sizeof(serverAddr.sin_zero));
addr_size = sizeof(serverAddr);
connect(skt, (struct sockaddr *) &serverAddr, addr_size);
/*find file size*/
fp = fopen(filename, "r");
fseek(fp,0,SEEK_END);
sz = ftell(fp);
rewind(fp);
sent_bytes = send(skt, fp, sz, 0);
printf("sent %d bytes\n", sent_bytes);
fclose(fp);
}
您還沒有指定一個語言,或者一個平臺/ OS,或任何東西。 –
您必須*總是*查看send()調用的返回值,以查看它實際從數據中讀出的數據字節數,並將其放入套接字的傳出數據緩衝區。對於「少量」數據而言,這種情況也是如此,儘管大量數據(但人們似乎放棄不這樣做的事實有時會使他們相信)。根據send()返回的值,您需要確定接下來要做什麼(例如再次使用更新的參數調用send()以發送更多數據或發生錯誤,或者如果已發送所有字節,則返回成功) –
它使用C.它的套接字編程模塊中有一個叫做send的函數。 –