最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#基于Sockets類(lèi)實(shí)現(xiàn)TCP通訊

 更新時(shí)間:2022年01月31日 12:34:12   作者:迎迎一笑  
這篇文章主要為大家詳細(xì)介紹了C#基于Sockets類(lèi)實(shí)現(xiàn)TCP通訊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C#基于Sockets類(lèi)實(shí)現(xiàn)TCP通訊的具體代碼,供大家參考,具體內(nèi)容如下

最終效果

TCPClient

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;
using System.Threading;

namespace TCPClient02
{
? ? public partial class Form1 : Form
? ? {
? ? ? ? public Form1()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? }
? ? ? ? Socket socketSend;
? ? ? ? private void button1_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? //Create socket
? ? ? ? ? ? socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
? ? ? ? ? ? IPAddress ip = IPAddress.Parse(textBox1.Text);
? ? ? ? ? ? IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(textBox2.Text));
? ? ? ? ? ? IDInfo idinfo = new IDInfo(); ?//Read ID number information
? ? ? ? ? ? //Get the IP address and port number of the remote server
? ? ? ? ? ? socketSend.Connect(point);
? ? ? ? ? ? ShowMessages("Connection succeeded");

? ? ? ? ? ? //Start a new thread and keep receiving messages sent by the server
? ? ? ? ? ? Thread th = new Thread(ReciveMessages);
? ? ? ? ? ? th.IsBackground = true;
? ? ? ? ? ? th.Start();
? ? ? ? }

? ? ? ? private void button2_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? string str = textBox3.Text.Trim();
? ? ? ? ? ? byte[] buffer = System.Text.Encoding.UTF8.GetBytes(str);
? ? ? ? ? ? socketSend.Send(buffer);
? ? ? ? }


? ? ? ? void ShowMessages(string str)
? ? ? ? {
? ? ? ? ? ? textBox4.AppendText(str + "\r\n");
? ? ? ? }
? ? ? ? void ReciveMessages()
? ? ? ? {
? ? ? ? ? ? while (true)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? byte[] buffer = new byte[1024 * 1024 * 3];
? ? ? ? ? ? ? ? int r = socketSend.Receive(buffer);
? ? ? ? ? ? ? ? if (r == 0)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? string s = Encoding.UTF8.GetString(buffer, 0, r);
? ? ? ? ? ? ? ? ShowMessages(socketSend.RemoteEndPoint + ":" + s);
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? private void Form1_Load(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? Control.CheckForIllegalCrossThreadCalls = false;
? ? ? ? }
? ? }
}

TCPserver

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.Sockets;
using System.Net;
using System.Threading;

namespace TCPserver
{
? ? public partial class Form1 : Form
? ? {
? ? ? ? public Form1()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? }

? ? ? ? private void button1_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //創(chuàng)建一個(gè)負(fù)責(zé)監(jiān)聽(tīng)的Socket
? ? ? ? ? ? ? ? Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
? ? ? ? ? ? ? ? //創(chuàng)建ip地址和端口號(hào)
? ? ? ? ? ? ? ? //IPAddress ip = IPAddress.Parse(textBox1.Text);
? ? ? ? ? ? ? ? IPAddress ip = IPAddress.Any;
? ? ? ? ? ? ? ? IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(textBox2.Text));
? ? ? ? ? ? ? ? //讓負(fù)責(zé)監(jiān)聽(tīng)的socket綁定ip地址和端口號(hào)
? ? ? ? ? ? ? ? socketWatch.Bind(point);

? ? ? ? ? ? ? ? ShowMsg("監(jiān)聽(tīng)成功");
? ? ? ? ? ? ? ? //設(shè)置監(jiān)聽(tīng)隊(duì)列(某一時(shí)刻連接客戶(hù)端的最大數(shù)目)
? ? ? ? ? ? ? ? socketWatch.Listen(10);

? ? ? ? ? ? ? ? //線(xiàn)程執(zhí)行的方法
? ? ? ? ? ? ? ? Thread th = new Thread(Listen); ? //服務(wù)器開(kāi)始監(jiān)聽(tīng)
? ? ? ? ? ? ? ? th.IsBackground = true;
? ? ? ? ? ? ? ? th.Start(socketWatch);

? ? ? ? ? ? }
? ? ? ? ? ? catch
? ? ? ? ? ? {

? ? ? ? ? ? }


? ? ? ? }

? ? ? ? void ShowMsg(string str)
? ? ? ? {
? ? ? ? ? ? textBox3.AppendText(str + "\r\n");

? ? ? ? }

? ? ? ? /// <summary>
? ? ? ? /// 等待客戶(hù)端的連接 并且創(chuàng)建與之通信的Socket
? ? ? ? /// </summary>
? ? ? ? ///?
? ? ? ? Socket socketSend;
? ? ? ? void Listen(object o)
? ? ? ? {
? ? ? ? ? ? Socket socketWatch = o as Socket;
? ? ? ? ? ? //負(fù)責(zé)監(jiān)聽(tīng)的socket 來(lái)接收客戶(hù)端的連接 ?
? ? ? ? ? ? //創(chuàng)建跟客戶(hù)端通信的socket

? ? ? ? ? ? while (true)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? try
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? socketSend = socketWatch.Accept();
? ? ? ? ? ? ? ? ? ? ShowMsg(socketSend.RemoteEndPoint.ToString() + "連接成功");
? ? ? ? ? ? ? ? ? ? //開(kāi)始一個(gè)新的線(xiàn)程不斷接受客戶(hù)端發(fā)送過(guò)來(lái)的消息
? ? ? ? ? ? ? ? ? ? Thread th = new Thread(Recive);
? ? ? ? ? ? ? ? ? ? th.IsBackground = true;
? ? ? ? ? ? ? ? ? ? th.Start(socketSend);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? catch
? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? }


? ? ? ? ? ? }

? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// 服務(wù)器不斷接受客戶(hù)端發(fā)送過(guò)來(lái)的消息
? ? ? ? /// </summary>
? ? ? ? /// <param name="o"></param>
? ? ? ? void Recive(object o)
? ? ? ? {
? ? ? ? ? ??

? ? ? ? ? ? Socket socketSend = o as Socket;
? ? ? ? ? ? while (true)
? ? ? ? ? ? {
? ? ? ? ? ? ? ?try
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //客戶(hù)端連接成功后,服務(wù)器應(yīng)該接收客戶(hù)端發(fā)來(lái)的消息
? ? ? ? ? ? ? ? ? ? byte[] buffer = new byte[1024 * 1024 * 2];
? ? ? ? ? ? ? ? ? ? //實(shí)際接收到的有效字節(jié)數(shù)
? ? ? ? ? ? ? ? ? ? int bytelen = socketSend.Receive(buffer);
? ? ? ? ? ? ? ? ? ? if (bytelen == 0)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? string str = Encoding.UTF8.GetString(buffer, 0, bytelen);
? ? ? ? ? ? ? ? ? ? ShowMsg(socketSend.RemoteEndPoint + ":" + str);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? catch
? ? ? ? ? ? ? ? { ?}
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ??

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? private void textBox1_TextChanged(object sender, EventArgs e)
? ? ? ? {

? ? ? ? }

? ? ? ? private void Form1_Load(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? Control.CheckForIllegalCrossThreadCalls = false;
? ? ? ? }

? ? ? ?/// <summary>
? ? ? ?/// 服務(wù)器給客戶(hù)端發(fā)送消息
? ? ? ?/// </summary>
? ? ? ?/// <param name="sender"></param>
? ? ? ?/// <param name="e"></param>
? ? ? ? private void button3_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? string str = textBox4.Text;
? ? ? ? ? ? byte[] buffer = System.Text.Encoding.UTF8.GetBytes(str);
? ? ? ? ? ? socketSend.Send(buffer);

? ? ? ? }
? ? }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#使用IronPython調(diào)用Python的實(shí)現(xiàn)

    C#使用IronPython調(diào)用Python的實(shí)現(xiàn)

    本文主要介紹了C#使用IronPython調(diào)用Python的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C# 創(chuàng)建高精度定時(shí)器的示例

    C# 創(chuàng)建高精度定時(shí)器的示例

    這篇文章主要介紹了C# 創(chuàng)建高精度定時(shí)器的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#播放鈴聲最簡(jiǎn)單實(shí)現(xiàn)方法

    C#播放鈴聲最簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了C#播放鈴聲最簡(jiǎn)單實(shí)現(xiàn)方法,通過(guò)調(diào)用系統(tǒng)方法實(shí)現(xiàn)播放wav格式音頻文件的功能,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • C#實(shí)現(xiàn)XML文件操作詳解

    C#實(shí)現(xiàn)XML文件操作詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)XML操作文件,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C# 9.0 新特性之模式匹配簡(jiǎn)化的實(shí)現(xiàn)

    C# 9.0 新特性之模式匹配簡(jiǎn)化的實(shí)現(xiàn)

    這篇文章主要介紹了C# 9.0 新特性之模式匹配簡(jiǎn)化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • C#檢查foreach判讀是否為null的方法

    C#檢查foreach判讀是否為null的方法

    這篇文章主要介紹了C#如何檢查foreach判讀其是否為null,文中給出了示例代碼,介紹的很詳細(xì),需要的朋友可以參考下方法
    2016-09-09
  • C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用(上)

    C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用(上)

    本篇文章對(duì)C#中ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • .net從服務(wù)器下載文件中文名亂碼解決方案

    .net從服務(wù)器下載文件中文名亂碼解決方案

    這篇文章主要給大家介紹.net中從服務(wù)器下載文件中文名亂碼的解決方案,有需要的朋友可以參考下
    2015-08-08
  • C#操作windows注冊(cè)表的方法

    C#操作windows注冊(cè)表的方法

    這篇文章主要介紹了C#操作windows注冊(cè)表的方法,涉及C#針對(duì)注冊(cè)表的讀取與寫(xiě)入技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • c#橋接模式(bridge結(jié)構(gòu)模式)用法實(shí)例

    c#橋接模式(bridge結(jié)構(gòu)模式)用法實(shí)例

    這篇文章主要介紹了c#橋接模式(bridge結(jié)構(gòu)模式)用法,較為詳細(xì)的分析了橋接模式的原理與用法實(shí)例,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12

最新評(píng)論

嫩江县| 渑池县| 罗平县| 舞阳县| 博乐市| 成武县| 沙雅县| 兴化市| 江永县| 广灵县| 宜春市| 兴业县| 澄江县| 富川| 抚顺县| 新野县| 南雄市| 兰州市| 安达市| 伊通| 鄂托克旗| 隆林| 铜川市| 灵山县| 武宣县| 通许县| 呼玛县| 耿马| 雷山县| 自贡市| 兴宁市| 上虞市| 常熟市| 神木县| 平顶山市| 古丈县| 乾安县| 高尔夫| 肃南| 民权县| 浮山县|