在windows下進行tcp的socket程式設計主要有以下步驟:
1.初始化wsa(winsock):
word wversionrequested;
wsadata wsadata;
wversionrequested = makeword( 2, 0 );
if(wsastartup( wversionrequested, &wsadata ) != 0)
2.建立乙個socket
socket socket(
int af,
int type,
int protocol
);socket sockclient = socket(af_inet, sock_stream, 0);
socket 的位址格式:af_unix 就象 unix 路徑名一樣識別 sockets。這種形式對於在同一臺機器上的 ipc 很有用。而
af_inet 使用象
192.9.200.10 這樣被點號隔開的四個
十進位制數字的位址格式。
socket 的型別:sock_stream表明資料象字元流一樣通過 socket(tcp) 。而 sock_dgram(udp) 則表明資料將是
資料報(datagrams)的形式。
protocol通常賦值為0
3.連線到伺服器
sockaddr_in addrsrv;
addrsrv.sin_family = af_inet;
addrsrv.sin_port = htons(5099);
addrsrv.sin_addr.s_un.s_addr = inet_addr("127.0.0.1");
sockaddr_in(在netinet/in.h中定義):
struct sockaddr_in ;
//在windows下:
typedef struct in_addr
s_un_b;
struct s_un_w;
unsigned long s_addr;
}s_un;
}in_addr;
if(connect(sockclient, (struct sockaddr*)&addrsrv, sizeof(addrsrv)) == invalid_socket)
connect(
socket s,
const struct sockaddr far * name,
int namelen
);
第乙個引數是客戶端的套接字(表明即將發起連線請求),第二個引數是服務端的套接字所在的「地方」(「地方」是我自定義的專有名詞),第三個引數是該「地方」的大小。如果請求連線成功,則返回0,否則返回錯誤碼。
4 傳送和接收資料
int send( socket s, const char far *buf, int len, int flags );
第乙個引數指定傳送端套接字描述符;
第二個引數指明乙個存放應用程式要傳送資料的緩衝區;
第三個引數指明實際要傳送的資料的位元組數;
第四個引數一般置0。
int recv( socket s, char far *buf, int len, int flags );
第乙個引數指定接收端套接字描述符;
第二個引數指明乙個緩衝區,該緩衝區用來存放recv函式接收到的資料;
第三個引數指明buf的長度;
第四個引數一般置0。
結對程式設計初體驗
軟工三的第一次作業,我和隔壁宿舍的高賢達組成一組結隊程式設計,第一次嘗試這種程式設計方式,我感覺到了一些方便之處,也感受到了一些不便之處,特地在此記錄下來這次的感受。結對程式設計感受 方便之處 第一,兩個人結隊程式設計的時候,就好像自己一邊寫,一遍又在檢查一樣,比這個還要強,因為寫這段 的腦子和檢視...
shell程式設計的初體驗
程式的功能如下 編寫乙個shell指令碼,實現以下功能 1 與使用者互動,輸入乙個目錄名,檢測該目錄是否存在。存在則繼續下面的操作,不存在則退出 2 當目錄名存在時,迴圈判斷並輸出目錄中各檔案的許可權。bin bash echo 請輸入乙個目錄 read dir if d dir then cd d...
WinSock網路程式設計基礎(1)
記錄學習windows網路程式設計過程中遇到的問題和相關筆記 socket起源於unix,socket是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。基於 開啟 讀 寫 關閉 模式,其中winsock就是變種之一 以下是乙個典型的c s中使用套接字介面的概述 winsock是wind...