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也具有乙個類似於開啟檔案的函式...