c# 两个程序通过tcp通信

两个程序要通信,必须知道对方电脑的IP地址和所使用的端口号。在程序里都有详细备注,希望大家来点评!

客户端程序:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MailKit.Net.Smtp;
using MailKit;
using MimeKit;
using System.Net.Sockets;

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

        private void Button1_Click(object sender, EventArgs e)
        {
            //ip地址和端口号在界面手动输入
            TcpClient tcpClient = new TcpClient(txtHost.Text,Int32.Parse(txtPort.Text));
            // 存储发送的数据
            NetworkStream ns = tcpClient.GetStream();
            // 打开一个文件,内容存在 fs
            FileStream fs = File.Open("x.txt",FileMode.Open);
            //文件中读取一个字节放在i中
            int i = fs.ReadByte();
            //将文件所有内容读到ns
            while (i!=-1)
            {
                ns.WriteByte((byte)i);
                i = fs.ReadByte();
            }
            fs.Close();
            ns.Close();
            tcpClient.Close();
        }
    }
}

服务器端程序:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace form_service
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //新建线程用来侦听
            Thread thread = new Thread(new ThreadStart(Listen));
            //气动线程
            thread.Start();
        }
        public void Listen()
        {
            //协议地址和端口
            IPAddress localaddr = IPAddress.Parse("127.0.0.1");
            //建立侦听
            TcpListener tcpListener = new TcpListener(localaddr,7980);
            //开始侦听
            tcpListener.Start();
            //建立服务器端侦接收到的连接
            TcpClient tcpClient = tcpListener.AcceptTcpClient();
            //存储接收到的数据 nerworkstream streamreader区别
            NetworkStream ns = tcpClient.GetStream();           
            StreamReader sr = new StreamReader(ns);
            //开始到结尾的 所有字符
            string result = sr.ReadToEnd();
            //用来更新UI界面的更新,防止线程堵塞
            Invoke(new UpdateDisplayDelegate(UpdateDisplay),sr);
        
        }

        public void UpdateDisplay(string text)
        {
            txtDisplay.Text = text;
        }
        //委托定义
        protected delegate void UpdateDisplayDelegate(string text);
        //控件变化
        private void Form1_SizeChanged(object sender, EventArgs e)
        {
            txtDisplay.Size = new Size(1270, 6000);
            txtDisplay.Show();
        }
    }
}

 

  • 4
    点赞
  • 17
    收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论 2
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值