.net的socket異步通訊示例分享
1、首先添加兩個(gè)windows窗體項(xiàng)目,一個(gè)作為服務(wù)端server,一個(gè)作為客戶端Client
2、然后添加服務(wù)端代碼,添加命名空間,界面上添加TextBox控件
using System.Net;
using System.Net.Sockets;
3、FormLoad方法添加代碼
private void Form1_Load(object sender, EventArgs e)
{
IPEndPoint epServer = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7878);//IP地址和端口號(hào)
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//定義socket
socket.Bind(epServer);//綁定
socket.Listen(10);//監(jiān)聽(tīng)
socket.BeginAccept(new AsyncCallback(RecVing), socket);//異步接收,回調(diào)方法為RecVing
}
4、添加回調(diào)方法代碼
private void RecVing(IAsyncResult rec_socket)
{
string cmdstr = "";
Socket sc = (Socket)rec_socket.AsyncState;
Socket socket = sc.EndAccept(rec_socket);
byte[] bytes = new byte[1024];
int i = socket.Receive(bytes);
cmdstr = Encoding.UTF8.GetString(bytes, 0, i);
showstrs(cmdstr);
sc.BeginAccept(new AsyncCallback(RecVing), sc);
}
5、添加showstrs方法,
定義委托private delegate void shixudong_invoke(string invokefun);
private void showstrs(string recv_strs)
{
if (recv_strs.Length != 0)
{
if (this.InvokeRequired)
{
shixudong_invoke invoke = new shixudong_invoke(showstrs);
this.Invoke(invoke, (object)recv_strs);
}
else
{
textBox1.Text = recv_strs;
}
}
6、到此為止,服務(wù)端已經(jīng)添加完畢
7,客戶端代碼,首先跟服務(wù)端一樣,添加命名空間,在界面上添加button事件
private void button1_Click(object sender, EventArgs e)
{
IPEndPoint IPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7878);//IP,端口號(hào)
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.BeginConnect(IPEndPoint, new AsyncCallback(Sending), socket);//回調(diào)方法Sending
}
8、添加回調(diào)方法,代碼如下
private void Sending(IAsyncResult rec_socket)
{
Socket socket = (Socket)rec_socket.AsyncState;
try
{
if (socket.Connected)
{
byte[] msgBuff = Encoding.UTF8.GetBytes(textBox1.Text);
socket.Send(msgBuff);
//socket.Accept();
}
else
{
Console.WriteLine("Error!", "Error!");
}
}
catch
{
Console.WriteLine("Error!", "Error!");
}
9、到此為止,客戶端代碼已經(jīng)完成,調(diào)試的時(shí)候先啟動(dòng)服務(wù)端,然后啟動(dòng)客戶端
10、運(yùn)行截圖如下,點(diǎn)擊按鈕前,在文本框中輸入shixudong
相關(guān)文章
.net數(shù)據(jù)庫(kù)操作框架SqlSugar的簡(jiǎn)單入門(mén)
這篇文章主要介紹了.net數(shù)據(jù)庫(kù)操作框架SqlSugar的簡(jiǎn)單入門(mén),幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04
.net6?在中標(biāo)麒麟下的安裝和部署過(guò)程
這篇文章主要介紹了.net6?在中標(biāo)麒麟下的安裝部署,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
利用asp.net實(shí)現(xiàn)生成不重復(fù)訂單號(hào)
訂單號(hào)在購(gòu)物過(guò)程中起到了很好的識(shí)別作用,更方便的有利于工作人員識(shí)別商品,本文介紹利用asp.net實(shí)現(xiàn)生成訂單號(hào)2012-12-12
.NET根據(jù)文件的哈希值篩選重復(fù)文件的實(shí)現(xiàn)思路
文章介紹了文件哈希值的概念,包括哈希算法、唯一性、固定長(zhǎng)度、不可逆性以及其在文件驗(yàn)證、數(shù)據(jù)完整性檢查、文件去重、密碼存儲(chǔ)等領(lǐng)域的應(yīng)用,接著,通過(guò)一個(gè)示例代碼說(shuō)明了如何通過(guò)文件大小分組并比對(duì)哈希值來(lái)篩選出重復(fù)文件,感興趣的朋友一起看看吧2025-03-03

