winSock網路程式設計初體驗

2021-07-25 08:01:31 字數 1844 閱讀 5397

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