C Socket基本程式設計一

2021-05-25 18:57:31 字數 2759 閱讀 8500

c# socket

基本程式設計一

同步字串的服務端與客戶端通訊

客戶端:

using

system;

using

system.collections.generic;

using

system.text;

using

system.net;

using

system.net.sockets;

namespace

client

catch (system.exception

ex)

console.writeline("server connect!-->", mytcpclient.client.localendpoint, mytcpclient.client.remoteendpoint);//

前者為本機埠,後者為伺服器端口

string

msg = console.readline();

networkstream

streamtoserver = mytcpclient.getstream();

byte buffer = encoding.unicode.getbytes(msg);

//將資訊打包

streamtoserver.write(buffer, 0, buffer.length); //

將資訊寫入網路流

console.writeline("sent:",msg); }

console.readline(); }

} }分析上面的程式:首先定義乙個「為

tcp網路服務提供客戶端連線」的

tcpclient

類的物件,這樣客戶端才能進行連線。然後進入迴圈(因為是多個客戶端連線)。

tcpclient

類的connect

函式的引數包括(本地埠號,連線端埠號)。

接下來的是向服務端輸出文字的部分。

networkstream

是提供用於網路訪問的基本資料流類,以

tcpclient

的例項物件所返回的用於傳送和接收的網路資料流進行

networkstream

進行初始化。然後將輸入的文字轉換成位元組序列「

byte

buffer = encoding.unicode.getbytes(msg);

//將資訊打包

」,然後這樣才能將位元組序列寫入網路資料流。

streamtoserver.write(buffer, 0, buffer.length); //

將資訊寫入網路流

這個函式的參數列對應是位元組序列,所讀取位元組的起始位置,位元組長度。

服務端:

using

system;

using

system.collections.generic;

using

system.text;

using

system.net;

using

system.net.sockets;

using

system.io;

namespace

server

);是本機的ip

tcplistener

mytcplistener = new

tcplistener(myip, 8500);

mytcplistener.start();

//偵聽可用連線

console.writeline("start listening...");

while (true)

<-", remoteclient.client.localendpoint, remoteclient.client.remoteendpoint);

networkstream

streamtoclient = remoteclient.getstream();

byte buffer = new

byte[bufferside];

intbytesread = streamtoclient.read(buffer, 0, bufferside);

console.writeline("reading data,byte...", bytesread);

string

msg = encoding.unicode.getstring(buffer, 0, bytesread);

//解碼傳輸資料

console.writeline("received:", msg); }

console.readline(); }

} }

分析上面的程式:首先定義本機,即服務端的位址,然後再以服務端ip和服務端埠號為引數例項化乙個網路偵聽的物件

tcplistener

(從tcp客戶端偵聽連線),tcplistener類的start()函式說明這個類的物件開始偵聽連線。

在迴圈中,「

tcpclient

remoteclient = mytcplistener.accepttcpclient();

」這一句以tcplistener所偵聽得到的乙個連線初始化乙個客戶端物件,然後以偵聽到的客戶端的網路資料流初始化乙個資料流物件。接著用這個資料流物件的read函式讀取流中的資料(這個時候仍然是位元組形式的)。然後再呼叫

encoding

.unicode.getstring(buffer, 0, bytesread)

,獲取流中字串。

C Socket程式設計

socket基本程式設計 服務端 using system.net using system.net.sockets using system.text using system.threading thread mythread socket socket 清理所有正在使用的資源。protecte...

c socket程式設計

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

C Socket程式設計

socket程式設計的一般步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定的埠號和伺服器的ip建立乙個endpoint對像 第三步 用socket對像的bind 方法繫結endpoint 第四步 用socket對像的listen 方法開始監聽 第五步 接收到客戶端的連線...