zoukankan      html  css  js  c++  java
  • Socket 学习(三).1 tcp 通讯

    实现了,局域网客户端 对客户端 的通讯。 实际上这是 一个 客户端 兼 服务端 。

    2个阿里云服务器测试 效果图:

    本地效果图:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
    
    namespace 模拟客服端01
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                TextBox.CheckForIllegalCrossThreadCalls = false;//禁止多线程检查
            }
    
         
            Socket socket_My;   //  主动建立连接套接字
            Socket socket_Listen; // 监听套接字
            Socket socket_Accept;   // 接收套接字
            Thread thread_Receive;//接收 线程
            Thread thread_Accept; // 发送线程
    
    
    
            public void Accept()
            {
                while (true)
                {
                    socket_Accept = socket_Listen.Accept();  // 监听套接字  接收 请求 返回 接收套接字
                    textBoxMag.AppendText("客户端连接成功!" + socket_Accept.RemoteEndPoint + "
    ");
                    thread_Accept = new Thread(Receive);
                    thread_Accept.IsBackground = true;
                    thread_Accept.Start();
                }
            }
    
    
            public void Receive()
            {
                while (true)
                {
                    try
                    {
                        byte[] B = new byte[1024];
                        socket_Accept.Receive(B);// 接收套接字 接收信息
                        string Message = Encoding.UTF8.GetString(B, 0, B.Length);
                        if (!string.IsNullOrEmpty(Message))
                        {
                            textBoxMag.AppendText(Message + "
    ");
                        }
                    }
                    catch (Exception)
                    {
                        textBoxMag.AppendText("连接关闭了" + "
    ");
                        btn_Conncet.Enabled = false;
                        break;
                    }
    
                }
            }
    
            private void StartListen_Click(object sender, EventArgs e)
            {
                socket_Listen = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket_Listen.Bind(new IPEndPoint(IPAddress.Any, int.Parse(textBoxMyPort.Text)));
                socket_Listen.Listen(10);
                textBoxMag.AppendText("开始监听" + "
    ");
                thread_Receive = new Thread(Accept);
                thread_Receive.IsBackground = true;
                thread_Receive.Start();
                StartListen.Enabled = false;
            }
    
            private void btn_Conncet_Click(object sender, EventArgs e)
            {
                try
                {
                    socket_My = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    socket_My.Connect(new IPEndPoint(IPAddress.Parse(textBoxIP.Text), int.Parse(textBoxPort.Text)));
                    btn_Conncet.Enabled = false;
                }
                catch (Exception ex)
                {
    
                    textBoxMag.AppendText("连接不上" + "
    ");
                }
            }
    
            private void button_Send_Click(object sender, EventArgs e)
            {
                try
                {
                    socket_My.Send(Encoding.UTF8.GetBytes(textBoxSend.Text + "
    "));
                }
                catch (Exception)
                {
                    textBoxMag.AppendText("发送失败" + "
    ");
                }
            }
    
    
        }
    }


    这里指明了 端口号,和IP ,接下来 ,做一个服务端 记录 它说有客户端的 IP  的通讯端口就好了。

  • 相关阅读:
    hdu1072 逃离迷宫系列 bfs
    hdu1495 倒水bfs
    hdu 1548 A strange lift (bfs)
    hdu1728 逃离迷宫bfs
    hdu1548 奇怪的电梯 dfs dijkstra bfs都可以,在此奉上dfs
    delphi 窗体的位置和高宽度-TForm:Letf、Top、Width、Height、ClientWidth、ClientHeight
    Delphi 鼠标控制函数GetCursorPos、SetCursorPos
    Delphi CoCreateGuid()函数 获取GUID
    Delphi出现“borland license information was found,but it is not valid for delphi”的错误,无法运行的解决方法
    一维条形码生成与识别技术
  • 原文地址:https://www.cnblogs.com/bingguang/p/4558587.html
Copyright © 2011-2022 走看看