【【W(wǎng)indows】】
【W(wǎng)indows: 頭文件的區(qū)別】
#include<winsock.h>
#include<winsock2.h>
【W(wǎng)indows: 初始化的區(qū)別】
WSADATA wsaData;
WSAStartup(0x202,&wsaData);
【W(wǎng)indows: 聲明Socket】
SOCKET類型
【W(wǎng)indows: Socket關(guān)閉】
closesocket()
【W(wǎng)indows: Socket操作錯誤返回值】
SOCKET_ERROR
【W(wǎng)indows: 設(shè)置socket非阻塞】
ioctlsocket(server_socket,FIONBIO,&ul);
【W(wǎng)indows: WSA宏】
WSA相關(guān)的操作
【W(wǎng)indows: Select()函數(shù)】
Select()函數(shù)的第一個參數(shù)無效,寫0就可以了。
【W(wǎng)indows: 編譯連接】
Ws2_32.lib
【W(wǎng)indows: 錯誤捕捉】
WSAGetLastError() 或者 GetLastError().
【W(wǎng)indows: 異常處理】
沒有對send()的異常處理,最后一個參數(shù)無效,寫0就可以了。
【W(wǎng)indows: sockaddr_in結(jié)構(gòu)】
addr_var.sin_addr.S_un.S_addr
Winsock里最后那個32bit的S_addr也有幾個以聯(lián)合(Union)的形式與它共享內(nèi)存空間的成員變量(便于以其他方式賦值).
遇到那種得到了是4個char的IP的形式(比如127一個,0一個,0一個和1一個共四個char),WinSock可以直接用4個S_b來賦值到S_addr里.
【【Linux】】
【Linux: 頭文件的區(qū)別】
#include <netinet/in.h> //大部分都在這兒
#include <unistd.h> // close函數(shù)在這兒
#include <sys/socket.h> // 在in.h里已經(jīng)包含了,可以省了
#include <errno.h> // 錯誤處理
#include <sys/types.h> // 系統(tǒng)類型定義
【Linux: 初始化的區(qū)別】
啥都不用做
【Linux: 聲明Socket】
SOCKET類型在Linux中沒有定義,直接用int即可。
【Linux: Socket關(guān)閉】
close()
【Linux: Socket操作錯誤返回值】
在Linux中沒有定義,判斷socket操作是否成功可用返回值是否為-1即可,可將SOCKET_ERROR聲明為-1。
【Linux: 設(shè)置socket非阻塞】
ioctlsocket在Linux中沒有定義,用fcntl替代即可,但要包含fcntl.h頭文件。
#include<fcntl.h>
fcntl(server_socket,F_SETFL, O_NONBLOCK);
【Linux: WSA宏】
WSA相關(guān)的操作在Linux不必要,直接去掉即可。
【Linux: Select()函數(shù)】
Select()函數(shù)的第一個參數(shù)必須是后幾個參數(shù)用到的socket中,值最大的數(shù)(整型)加1。
【Linux: 編譯連接】
連接是使用參數(shù):-lstdc
運行時需要libstdc++.so.5,可在/usr/lib目錄中創(chuàng)建一個鏈接。
【Linux: 錯誤捕捉】
#include <errno.h>
extern int errno;

int geterror()
{return errno;}
【Linux: 異常處理】
當(dāng)連接斷開,還發(fā)數(shù)據(jù)的時候,不僅send()的返回值會有反映,而且還會像系統(tǒng)發(fā)送一個異常消息,如果不作處理,系統(tǒng)會出BrokePipe,程序會退出。為此,send()函數(shù)的最后一個參數(shù)可以設(shè)MSG_NOSIGNAL,禁止send()函數(shù)向系統(tǒng)發(fā)送異常消息。
【Linux: sockaddr_in結(jié)構(gòu)】
addr_var.sin_addr.s_addr
Linux的Socket沒有這個聯(lián)合,就是一個32bit的s_addr。
遇到那種得到了是4個char的IP的形式(比如127一個,0一個,0一個和1一個共四個char),在Linux下,可以用邊向左移位(一下8bit,共四下)邊相加的方法賦值。