Socket程式設計基礎學習

2021-10-04 20:14:57 字數 3440 閱讀 2136

1、建立乙個socket物件

socket mysocket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp);

addressfamily 定址型別

addressfamily.internetwork代表ipv4。

sockettype 套接字型別

sockettype.dgram表示使用資料報協議,用於udp;

sockettype.stream 表示使用位元組流,用於tcp;

protocoltype 協議型別

protocoltype.udp表示使用udp協議;

protocoltype.tcp表示使用tcp協議;

注意的是套接字型別與協議型別並不是可以隨便組合

sockettype

protocoltype

描述stream(使用位元組流)

tcp面向連線

dgram(使用資料報)

udp面向無連線

rawicmp

網際訊息控制

rawraw

基礎傳輸協議

2、建立ip位址類

//將文字框中的文字轉換為ip位址

ipaddress ipaddress = ipaddress.parse(iptextbox.text);或者

//建立ip位址

ipaddress ipaddress = ipaddress.any;//表示偵聽任何ip

//宣告網路終端節點(ip位址加埠號) 用於表示具體位置(具體電腦得具體程式)

ipendpoint ipendpoint = new ipendpoint(ipaddress, port);

3、繫結網路終端節點

mysocket.bind(ipendpoint);

4、 //開始監聽 設定掛起最多個數

mysocket.listen(10);//最多掛起10個連線

5//等待 接受客戶端的連線並建立新的socket物件

sendsocket = serversocket.accept();
6、//客戶端 宣告網路終端節點(ip位址加埠號)

ipendpoint ipendpoint = new ipendpoint(ipaddress, port);

//連線伺服器

socket.connect(ipendpoint);

連線成功後,可用socket物件開始互相傳遞資料

7、傳送資料

//將string型別轉換為二進位制陣列用於傳輸 (只有二進位制才能通過傳輸)

byte btmsg = encoding.utf8.getbytes(msg);

//將陣列傳送出去

socket.send(btmsg, btmsg.length,socketflags.none);

8、接受資料

//宣告3m空間 用於存放接受的訊息

byte buffer = new byte[1024 * 1024 * 3];

//將接受的資料存入buffer中並返回實際接受的資料大小

int r = socketsend.receive(buffer);//接受資料

伺服器socket**示例

private

void

windowserver_load

(object sender,

eventargs e)

private

void

login_click

(object sender,

eventargs e)

//顯示文字訊息

private

void

msgshow

(string str)

//宣告socket用於接受連線成功的socket物件

socket sendsocket;

///接受連線生成 新套接字物件 (生成連線成功的物件)

private

void

connectsocket

(object obj)

///

/// 接受資料物件方法

///

///

private

void

receivedata

(object o)

//將二進位制資料按照utf-8格式轉換為字串

string str = encoding.utf8.

getstring

(buffer,

0, r)

;msgshow

(socketsend.remoteendpoint.

tostring()

+":"

+ str);}

}//傳送訊息

private

void

sendbut_click

(object sender,

eventargs e)

客戶端**

private

void

windowclient_load

(object sender,

eventargs e)

//宣告套字接

socket socket;

private

void

loginbutton_click

(object sender,

eventargs e)

///

/// 將訊息輸出到文字框

///

///

void

showmsg

(string str)

///

/// 傳送訊息到伺服器

///

///

///

private

void

send_click

(object sender,

eventargs e)

///

/// 接受訊息

///

void

receivemessage()

//將二進位制資料按照utf-8格式轉換為字串

string str = encoding.utf8.

getstring

(buffer,

0, r)

;showmsg

(socket.remoteendpoint.

tostring()

+":"

+ str);}

}

socket程式設計基礎

對於socket在這裡我不想究其歷史,我只想說其時它是一種程序通訊的方式,簡言之就是呼叫這個網路庫的一些api函式就能實現分布在不同主機的相關程序之間的資料交換.socket中首先我們要理解如下幾個定義概念 二是埠號 用來標識本地通訊程序,方便os提交資料.就是說程序指定了對方程序的網路ip,但這個...

socket程式設計基礎

對於socket在這裡我不想究其歷史,我只想說其時它是一種程序通訊的方式,簡言之就是呼叫這個網路庫的一些api函式就能實現分布在不同主機的相關程序之間的資料交換.socket中首先我們要理解如下幾個定義概念 二是埠號 用來標識本地通訊程序,方便os提交資料.就是說程序指定了對方程序的網路ip,但這個...

Go基礎程式設計 Socket程式設計

socket起源於unix,而unix基本哲學之一就是 一切皆檔案 都可以用 開啟open 讀寫write read 關閉close 模式來操作。socket就是該模式的乙個實現,網路的socket資料傳輸是一種特殊的i o,socket也是一種檔案描述符。socket也具有乙個類似於開啟檔案的函式...