【【windows】】
【windows: 標頭檔案的區別】
#include
#include
【windows: 初始化的區別】
【windows: 宣告socket】
socket型別
【windows: socket關閉】
closesocket()
【windows: socket操作錯誤返回值】
socket_error
【windows: 設定socket非阻塞】
【windows: wsa巨集】
wsa相關的操作
【windows: select()函式】
select()函式的第乙個引數無效,寫0就可以了。
【windows: 編譯連線】
ws2_32.lib
【windows: 錯誤捕捉】
wsagetlasterror() 或者 getlasterror().
【windows: 異常處理】
沒有對send()的異常處理,最後乙個引數無效,寫0就可以了。
【windows: sockaddr_in結構】
addr_var.sin_addr.s_un.s_addr
winsock裡最後那個32bit的s_addr也有幾個以聯合(union)的形式與它共享記憶體空間的成員變數(便於以其他方式賦值).
遇到那種得到了是4個char的ip的形式(比如127乙個,0乙個,0乙個和1乙個共四個char),winsock可以直接用4個s_b來賦值到s_addr裡.
【【linux】】
【linux: 標頭檔案的區別】
#include
//大部分都在這兒
#include // close函式在這兒
#include // 在in.h裡已經包含了,可以省了
#include // 錯誤處理
#include // 系統型別定義
【linux: 初始化的區別】
啥都不用做
【linux: 宣告socket】
socket型別在linux中沒有定義,直接用int即可。
【linux: socket關閉】
close()
【linux: socket操作錯誤返回值】
在linux中沒有定義,判斷socket操作是否成功可用返回值是否為-1即可,可將socket_error宣告為-1。
【linux: 設定socket非阻塞】
ioctlsocket在linux中沒有定義,用fcntl替代即可,但要包含fcntl.h標頭檔案。
#include
fcntl(server_socket,f_setfl, o_nonblock);
【linux: wsa巨集】
wsa相關的操作在linux不必要,直接去掉即可。
【linux: select()函式】
select()函式的第乙個引數必須是後幾個引數用到的socket中,值最大的數(整型)加1。
【linux: 錯誤捕捉】
#include
extern int errno;
int
geterror()
【linux: 異常處理】
當連線斷開,還發資料的時候,不僅send()的返回值會有反映,而且還會像系統傳送乙個異常訊息,如果不作 處理,系統會出brokepipe,程式會退出。為此,send()函式的最後乙個引數可以設msg_nosignal,禁止send()函式向系統傳送 異常訊息。
【linux: sockaddr_in結構】
addr_var.sin_addr.s_addr
linux的socket沒有這個聯合,就是乙個32bit的s_addr。
遇到那種得到了是4個char的ip的形式(比如127乙個,0乙個,0乙個和1乙個共四個char),在linux下,可以用邊向左移位(一下8bit,共四下)邊相加的方法賦值。
Windows和Linux下socket的區別
1.標頭檔案 windows下winsock.h或winsock2.h linux下netinet in.h 大部分都在這兒 unistd.h close函式在這兒 sys socket.h 在in.h裡已經包含了,可以省了 2.初始化 windows下需要用wsastartup啟動ws2 32.l...
windows和linux下的sleep之比較
include include include using namespace std int main int argc,char argv ace debug lm notice,d n ace os sleep ace time value 0,1 1000 ace debug lm noti...
windows和linux下打包python程式
一 windows下用py2exe打包python程式生成exe檔案 1 py2exe是一種python發布的打包工具,可以把python指令碼轉換成windows下的可執行程式,不需要安裝python便可執行。3 編寫例程 新建乙個資料夾my py2exe,編寫hello.py程式 hello.p...