我是一個初學者在Linux環境下的套接字編程。在Linux中的套接字編程:發送()
代碼:
void proccess_server(int s)
{
ssize_t size =0 ;
char buffer[1024];
for(;;)
{
printf("proccess:%d proccessing socket :%d\n",getpid(),s);
size = recv(s,buffer,sizeof(buffer),0);
if(0 == size)
return ;
sprintf(buffer,"Response from server:%d,%d bytes altogether\n",getpid(),size);
send(s,buffer,strlen(buffer)+1,0);
}
}
,我不明白爲什麼len
PARAM在send()
在send(s,buffer,strlen(buffer)+1,0);
再添字節(strlen(buffer)+1)
請幫幫我!
這段代碼都是錯誤的,你在哪裏找到它的?它不檢查錯誤情況(size == -1),並且它期望「buffer」在沒有檢查的情況下被終止,因此它存在安全缺陷。 – BatchyX 2012-01-01 11:12:49
呃..這是一個簡單的教程,展示了我的教科書中的網絡編程API。如果我想修復它,我應該在接收數據之前用\ 0填充緩衝區嗎? – 2012-01-01 14:39:35
是的,你應該最多收回sizeof(buffer)-1字節。 – BatchyX 2012-01-01 17:06:46