关闭

.Net网络编程——使用TcpClient与TcpListener建立客户端与服务端连接

标签: .net网络编程socket通信
1638人阅读 评论(12) 收藏 举报
分类:



           

  一,.NET中如何实现建立连接



                        在网络中,我们可以通过IP地址唯一定位一台主机,而在主机中,我们要确定收到的数据包发给谁,可以通过端口号,端口号的作用简单说就是不至于使你要发给QQ好友的消息数据包被错误发到了你的OC程序上。


              通常,我们把发起连接的那一端称为客户端,这是主动的一方;而静默等待连接到来的那一端作为服务端。这个概念是比较相对的。


              在.Net中,我们可以使用TcpClient来建立连接,使用TcpListener来监听连接,从而在客户端和服务端建立连接。



二,服务端建立监听


                   

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace 服务端对端口进行侦听
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("服务端正在运行呀。。。");
            //IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
           // IPAddress ip = IPAddress.Parse("127.0.0.1");
            IPAddress ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0]; //同上
            TcpListener listener = new TcpListener(ip, 8500);  //选择侦听端口

            listener.Start();//开始侦听

            Console.WriteLine("开始侦听啦。。。");
            Console.WriteLine("\n\n输入\"Q\"键退出。。");
            ConsoleKey key;
            do
            {
                key = Console.ReadKey(true).Key;

            } while (key!=ConsoleKey.Q);
        }
    }
}


   启动程序后,使用netstat -a查看端口情况:





     


   发现端口正在listening....




三,客户端与服务端建立连接



         在服务端侦听端口打开的情况下,就可以与服务端端口进行连接啦:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace 服务端与客户端的连接
{
    class Program
    {
        static void Main(string[] args)
        {

            #region 客户端与服务端连接

                //Console.WriteLine("客户端启动啦啦啦。。");
                //TcpClient client = new TcpClient();

                //try
                //{
                //    //与服务器进行连接
                //    client.Connect(IPAddress.Parse("127.0.0.1"), 8500);

                //}
                //catch (Exception ex)
                //{
                //    Console.WriteLine(ex.Message);
                //    return;
                //}

                ////打印连接到服务端的信息
                //Console.WriteLine("服务端连接成功啦。。本地IP端口为:{0}------>服务IP端口为:{1}", client.Client.LocalEndPoint, client.Client.RemoteEndPoint);//client.Client获得到套接字

            #endregion

            #region 多个客户端与服务端的连接

                Console.WriteLine("客户端启动啦啦啦啦。。。。");
                TcpClient client;

                for (int i = 0; i < 2; i++)
                {
                    try
                    {
                        client = new TcpClient();//每创建一个新的TcpClient便相当于创建了一个新的套接字Socket与服务端通信,.Net会自动为这个套接字分配 一个端口号。
                        //与服务器建立连接
                        client.Connect(IPAddress.Parse("127.0.0.1"), 8500);

                    }
                    catch (Exception ex)
                    {

                        Console.WriteLine(ex.Message);
                        Console.WriteLine(ex.StackTrace);
                        return;
                    }
                    Console.WriteLine("服务端连接成功啦。。本地IP端口为:{0}------>服务IP端口为:{1}", client.Client.LocalEndPoint, client.Client.RemoteEndPoint);//client.Client获得到套接字
                }

            #endregion


        }
    }
}



   连接时,主要是使用TcpClient对象,传入要连接的服务端的IP和端口号,就像发邮件那样,只要选择好存在的发件人,就能发送那样。




       


           

                    

0
0
查看评论

C#利用TcpListener和TcpClient类实现服务器和客户端的通信

注:只能在服务器和客户端不再同一台PC上实现通信,同一台PC无法利用封装的类实现客户端与服务器通信!!! 由于还是初学C#,目前还不知道什么原因!!!记录下... 网络聊天系统: 服务器相关: 首先声明一个用户相关的类: using System; using System.Collect...
  • mhlz280112
  • mhlz280112
  • 2016-05-28 11:55
  • 1021

基于TcpListener和TcpClient的Web服务器

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net...
  • CGS_______
  • CGS_______
  • 2017-06-24 15:35
  • 289

C#TcpClient TcpListener客户端服务器程序

服务器程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System...
  • riyuedangkong1
  • riyuedangkong1
  • 2016-10-09 17:41
  • 3025

一个TCPClient和TCPListener的例子 dotNet

真希望有时间能静下心来写几篇c#、java和c++ socket相互通信的帖子。写写它们的异同点,总结一下。下面是msdn上的一个例子,使用TCPClient来处理连接与收发,特别简单。static void Connect(String server, String message) { ...
  • lincyang
  • lincyang
  • 2011-05-05 13:30
  • 5787

使用Net.Sockets.TcpListener和Net.Sockets.TcpClient进行图片传输时如何精确控制接收缓存数组大小

在dotnet平台Net.Sockets.TcpListener和Net.Sockets.TcpClient已经为我们封装了所有Socket关于tcp部分,操作也更为简单,面向数据流。使用TcpClient的GetStream方法获取数据流后可以方便的对数据流进行读写操作,就如同本地磁盘的文件读写一...
  • SANTOOK
  • SANTOOK
  • 2014-07-30 06:23
  • 3841

[C#基础]网络编程(二):TcpListener & TcpClient

TcpListener & TcpClient,可以看作为对socket的进一步封装(基于tcp协议),TcpListener为服务器端,TcpClient为客户端。 TcpListener :https://msdn.microsoft.com/zh-cn/library/s...
  • lyh916
  • lyh916
  • 2015-11-15 16:40
  • 2243

C#网络编程系列文章(三)之TcpListener实现异步TCP服务器

原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 本文介绍 TcpListener 类提供一些简单方法,用于在阻止同步模式下侦听和接受传入连接请求。 可使用 TcpClient ...
  • zhujunxxxxx
  • zhujunxxxxx
  • 2015-03-14 18:02
  • 10367

C# Socket与TcpListener、TcpClient和UdpClient的区别及联系

应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务。这些协议类建立在 System.Net.Sockets.Socket 类的基础之上,负责数据传送的细节。(也就是说TCPClient、TCPLi...
  • Aprilcxn
  • Aprilcxn
  • 2015-03-23 19:02
  • 641

TcpListener类与TcpClient类的使用

TcpListener和TcpClient类是对Socket的进一步封装,为基于TCP协议的网络通信提供更加便捷的调用方式。 TcpListener在服务器负责监听和接受客户端的连接请求,TcpClient类提供一系列可用于TCP网络通信的API,是以流的方式来读写数据的,调用GetStream的...
  • kevin_IoT
  • kevin_IoT
  • 2017-02-09 15:10
  • 1549

一、C#网络编程(TcpListener,TcpClient)

一、基础知识1、面向连接的传输协议:TCP2、套接字Socket                   套接字包括两个重要信息:(1...
  • tiz198183
  • tiz198183
  • 2011-07-21 21:26
  • 841
    个人资料
    • 访问:970661次
    • 积分:21879
    • 等级:
    • 排名:第405名
    • 原创:537篇
    • 转载:13篇
    • 译文:7篇
    • 评论:5172条
    dig coin