當使用伯克利套接字api時,通過讀取/發送或寫入/接收呼叫發送的內容的數據類型是什麼?例如 -什麼是通過套接字發送的內容的數據類型?
char *msg = "Our Message!";
int len, bytes_sent;
len = strlen(msg);
bytes_sent = send(sockfd, msg, len, 0);
在這段代碼
,我們使用的是char類型,但我們只限於char類型,因爲發送/寫/ SENDTO通常採取void *
類型。我也看到過,如果我們發送一些int,它可能實際上存儲在小端/大端,如果它們的端點不匹配,會導致問題b/w源/目標。那麼爲什麼char
類型也遭受這個問題呢?
另外像C和C++這樣的不同語言也有不同的大小char
,那爲什麼這不是問題呢?如果套接字不關心任何type
,只是將內容視爲緩衝區,爲什麼我們不看到隨不同tcp服務器/客戶機使用不同語言編寫並相互通信時的數據隨機損壞?
總之,可以通過套接字安全地發送什麼值(類型)?
「不同的語言像C和C++有不同的字符大小」不,在C和C++中,字符的大小都是1. –
@NeilButterworth哦所以字面'a'的大小必須是4 = –
最安全的方法是發送一個字節緩衝區,'char'總是1個字節。所有爲此設計的語言都有這樣的數據類型。 – DeiDei