C#网络编程之客户端编程与服务端的一般步骤(8)

本文详细介绍了TCP编程的基本步骤,包括服务器端和客户端的实现。服务器端通过创建TcpListener对象并在指定端口监听,接受客户端连接请求,使用TcpClient对象进行数据传输。客户端则通过TcpClient的构造函数建立连接,使用GetStream方法进行数据交换。文章提供了具体的C#代码示例,展示了如何进行网络通信。
摘要由CSDN通过智能技术生成

TCP编程的一般步骤
1.网络通信的最基本的前提就是客户端要先和服务器建立TCP连接
2.服务端要不断的监听客户端是否有连接请求、并且服务端能要识别特定的客户端
3.连接并创建对应的套接字
4.发送数据和接收数据

编写服务器端程序的一般步骤
1.创建一个TcpListener对象,然后调用该对象的Start方法在指定的端口进行监听
//生命
2.在单独的线程中,首先循环调用AcceptTcpClient方法接收客户端的连接请求
,从该方法中的返回结果中得到与该客户端对应的TcpClient对象,并利用该对象
的GetStream方法得到NetworkStream。然后再利用该对象得到其他使用更方便的
对象,比如BinaryReader对象、BinaryWrite对象,为进一步与对方通信做准备。
3.每得到一个新的TcpClient对象,就创建一个与客户对应的线程,在线程与对应的
客户进行通信。

4.根据传送信息的情况确定是否关闭与客户连接。

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

namespace TCP
{
    public partial class TcpListenerTest : Form
    {
        public TcpListenerTest()
        {
            InitializeComponent();
        }
        //声明
        private IPAddress localAddress;//  IP地址 IPAddress类 在命名空间 using System.Net下
        private const int port = 58080;//端口
        private TcpListener tcpListener;//监听套接字  TcpLestener与TcpClient类 在命名空间 using  System.Net.Sockets下
        private TcpClient tcpClient;//服务端与客户端建立连接
        private NetworkStream newworkStream;//利用NetworkStream对象与远程主机发送数据或接收数据
    private BinaryReader binaryReader;//读取  BinaryReader与BinaryWriter类在命名空间using System.IO下
        private BinaryWriter binaryWrite;//写入
        private void Form1_Load(object sender, EventArgs e)
        {
            IPAddress[] listenerIp = Dns.GetHostAddresses("www.baidu.com");//返回主机指定的IP地址
            localAddress = listenerIp[0]; //初始化IP地址为本地地址
            tcpListener = new TcpListener(localAddress,port);//创建TcpListener对象
            tcpListener.Start();//开始监听

            Thread thread = new Thread(AcceptClientConnect);//启动一个线程接收请求
            thread.Start();//启动线程
        }
        //发起请求
        private void AcceptClientConnect()
        { 
            while(true)
            {
                try
                {
                    tcpClient = tcpListener.AcceptTcpClient();//从端口接收一个连接,并赋予它TcpClient对象
                    if (tcpClient != null)
                    {
                        newworkStream = tcpClient.GetStream();
                        binaryReader = new BinaryReader(newworkStream);
                        binaryWrite = new BinaryWriter(newworkStream);
                    }

                }
                catch
                {
                    break;
                }
            }
        }
    }
}

TCP编程 客户端程序一般步骤
1.利用TcpClient的构造函数创建一个TcpClient对象
2.使用Connect方法与服务器建立连接
3.利用TcpClient对象的GetStream对象得到网络流,然后利用该网络流与服务器进行数据传输
4.创建一个线程监听指定的端口,循环接收并处理服务器发送过来的信息。
5.完成工作之后,想服务器发送关闭信息,并关闭与服务器的连接。

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

namespace TCP
{
    public partial class TcpClientTest : Form
    {
        public TcpClientTest()
        {
            InitializeComponent();
        }
        private TcpClient tcpClient;//声明
        private IPAddress iAdress;//IP地址
        private const int port=58080; //端口 
        private NetworkStream networkStream;//网络流
        private BinaryReader binayRead;//读取
        private BinaryWriter binayWrite;//写入
        private void TcpClient_Load(object sender, EventArgs e)
        {
            IPAddress[] ipAddress = Dns.GetHostAddresses("www.baidu.com");//返回主机指定的IP地址
            iAdress = ipAddress[0]; //初始化IP地址为本地地址
            IPEndPoint ipoint = new IPEndPoint(iAdress,port);//将网络端点表示为IP和端口号
            tcpClient = new TcpClient(ipoint);//实例化TcpClient类
            //最方便 TcpClient tcpClient=new TcpClient("www.baidu.com",port);

            if (tcpClient != null)
            {
                networkStream = tcpClient.GetStream();//得到网络流
                binayRead = new BinaryReader(networkStream);
                binayWrite = new BinaryWriter(networkStream);
            }
        }

        private void ReMessage()
        {
            while (true)
            {
                try
                {
                    string rcMsg = binayRead.ReadString();//从网络流中读取数据
                    if (rcMsg != null)
                    {
                        MessageBox.Show(rcMsg);
                    }
                    else
                    {
                        break;
                    }
                }
                catch
                {
 
                }
            }
        }
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值