網路連線基本過程就像檔案控制代碼讀寫(含例子)

2021-10-19 10:48:10 字數 2621 閱讀 3343

編者:李國帥

網路連線基本過程:就像檔案控制代碼和視窗一樣可以看成是乙個流介面,只要配置好介面物件屬性,連通操作流程或網路,直接向這個介面傳送和讀取位元組流就可以完成工作,具體位元組流是怎麼處理的,只是下一層協議需要處理的工作。

wsadata wsadata;

sockaddr_in local;

local.sin_addr.s_addr=inaddr_any;

int wsaret=wsastartup(0x101,&wsadata);

server=socket(af_inet,sock_stream,0);

if(bind(server,(sockaddr*)&local,sizeof(local))!=0)

if(listen(server,10)!=0)

socket client;

sockaddr_in from;

int fromlen=sizeof(from);

client=accept(server,(struct sockaddr*)&from,&fromlen);//使用另外乙個隨機埠與客戶端埠通訊

send(client,buff,strlen(buff),0);

n=recv(client,buff,512,0);

closesocket(client);

closesocket(server);

wsacleanup();

wsadata wsadata;

struct sockaddr_in sockaddr;

int wsaret=wsastartup(0x101,&wsadata);

socket clientsocket;

clientsocket=socket(af_inet,sock_stream,ipproto_tcp);

sockaddr.sin_addr.s_addr = inet_addr(servername);

sockaddr.sin_family=af_inet;

sockaddr.sin_port = htons((u_short)nhostport);

int r = connect(clientsocket, (sockaddr*)&sockaddr, sizeof(sockaddr));

send(clientsocket,buff,strlen(buff),0);

z=recv(clientsocket,buff,512,0);

closesocket(clientsocket);

wsacleanup();

ioctlsocket() 控制套介面的模式。

int pascal far ioctlsocket( socket s, long cmd, u_long far* argp);

s:乙個標識套介面的描述字。

cmd:對套介面s的操作命令。

argp:指向cmd命令所帶引數的指標。

u_long pascal far htonl( u_long hostlong);

hostlong:主機位元組順序表達的32位數。

注釋:本函式將乙個32位數從主機位元組順序轉換成網路位元組順序。

u_short pascal far htons( u_short hostshort);

hostshort:主機位元組順序表達的16位數。

注釋:本函式將乙個16位數從主機位元組順序轉換成網路位元組順序。

u_long pascal far ntohl( u_long netlong);

netlong:乙個以網路位元組順序表達的32位數。

注釋:本函式將乙個32位數由網路位元組順序轉換為主機位元組順序。

u_short pascal far ntohs( u_short netshort);

netshort:乙個以網路位元組順序表達的16位數。

注釋:本函式將乙個16位數由網路位元組順序轉換為主機位元組順序。

udp分為主動和被動,如果主動接收,recv要阻塞,直到接收到資料,被動的話使用select函式,使得進行指定時間的等待後不論有無資料均返回.

#include #include bool initwinsock();

void main()

/服務端接收/

char bufferserver[1024]="\0";

printf("waiting for message from others-------------\n");

if (recvfrom(socketserver,bufferserver,sizeof bufferserver,0,(struct sockaddr*)&from,&fromlen)!=socket_error)

//if (recv(socketserver, bufferserver, sizeof bufferserver , 0)!=socket_error)

//sleep(500);

} closesocket(socketclient);

closesocket(socketserver);

}bool initwinsock()

else }

return true;

}

簡述網路連線過程

先來簡單說一下,當我們輸入 也即是url或者說是網域名稱 時,瀏覽器先對www.baidu.com通過dns協議進行解析,查詢到對應的ip位址。然後使用http協議訪問web伺服器,通過交換機,路由器,進入網際網路中,根據對應的ip位址,找到所對應的伺服器,通過伺服器的防火牆,進入伺服器中,獲取對應...

Linux中修改檔案來設定網路連線

1,自動獲取ip的方法 自動獲取與4個檔案有關係 a etc sysconfig network scripts ifcfg eth0 zhangy localhost network scripts cat ifcfg eth0 marvell technology group ltd.88e80...

使用Vmware過程中,突然網路連線不上問題

第一次的解決方法 1 我一般過一段時間就會對虛擬機器進行拍快照備份 在使用過程中,如果沒有太大變化,恢復網路正常的快照一般是能解決問題的,但是要記得恢復快照之前要備份你已經修改過的所有東西,以防丟失檔案等 這種方法一點也不推薦,但是確實沒辦法還是可以用的。是由系統自帶網路管理器 networkman...