windows和linux下socket程式設計的不同

2021-07-23 19:43:14 字數 1975 閱讀 9559

【【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...