socket程式設計 一

2021-09-18 06:38:55 字數 2170 閱讀 5200

socket 類提供一系列的方法實現同步或非同步的通訊

socket 類提供了非同步方法,比如:同步方法中 receive對應beginreceive/endreceive 方法。

同步模式

如果是單執行緒的程式,可以採用同步操作模式。如果採用面向連線的tcp協議,

server 端可以呼叫bind方法指定監聽的埠,再呼叫listen方法啟動監聽,accept方法處理連線請求並返回乙個socket,可以用這個socket與client端交換資料。

client 端直接呼叫connect方法以連線到server,可以呼叫send/receive 來與server端交換資料。

2 非同步

如果採用面向連線的tcp協議,server 端呼叫beginaccept與endaccept處理連線請求。

client 端呼叫beginconnect 與endconnect 連線到監聽主機,呼叫beginsend與endsend,beginreceive與endreceive 同server 交換資料

下面**示例,演示兩個client 連線到同乙個server,通過server**資料,實現兩個client端通訊

server 端**

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.net;

using system.net.sockets;

using system.collections;

using system.threading;

namespace socketserver01

,you are connected", client.client.remoteendpoint.tostring());

docommunicate chatclient = new docommunicate(client);}}

}}

class docommunicate

/// /// 接收訊息

///

private void runchat()

//use a try...catch to catch any exceptions

}catch (exception e44)

}/// /// 傳送資料,並啟動接收執行緒

///

private void startchat()

static void sendsystemmessage(string msg)

catch (exception e)}}

}static void sendmsgtoall(string nick, string msg)

catch (exception e)}}

}}

client端**

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.text;

using system.threading.tasks;

using system.windows.forms;

using system.net;

using system.net.sockets;

namespace socketclient02

private void form1_load(object sender, eventargs e)

catch (exception ex)

}private void textbox1_textchanged(object sender, eventargs e)

private void run()

}catch (exception e)}}

private void btnsend_click(object sender, eventargs e)}}

}

socket程式設計(一)

1 socket可以看成是使用者程序與核心網路協議的程式設計介面。2 socket不僅可以用於本機的程序間通訊,還可以用於網路不同主機的程序間通訊。異構架構可以不同 手機pc ipv4套介面位址結構通常也稱為 網際套接字位址結構 它以sockaddr in命名,定義在標頭檔案中 struct soc...

socket程式設計(一)

include include pragma comment lib,ws2 32.lib using namespace std int main int argc,char argv 建立套接字 socket slisten socket af inet,sock stream,ipproto ...

socket程式設計(一)

1.socket可以看成是使用者程序與核心網路協議棧的程式設計介面。2.socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機的程序間通訊。底層那部分已經被核心實現了,也就是tcp ip協議棧已經屬於核心的一部分了,應用層是使用者要實現的,它屬於使用者程序的部分,也就是工作在使用者空間,...