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

一,.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和端口号,就像发邮件那样,只要选择好存在的发件人,就能发送那样。

时间: 2024-10-12 10:19:18

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

C# - 网络编程 之 TcpClient与TcpListener

TcpClient类 TcpListener类 TCP通信 UDP通信 参考:

二、网络编程-socket之TCP协议开发客户端和服务端通信

知识点:之前讲的udp协议传输数据是不安全的,不可靠不稳定的,tcp协议传输数据安全可靠,因为它们的通讯机制是不一样的.udp是用户数据报传输,也就是直接丢一个数据包给另外一个程序,就好比寄信给别人,信丢了你也不知道,tcp传输需要先和服务端建立连接,当客户端与服务器连接时,服务器会给出应答,我俩连上了,而且数据传过来还会进行一个数据包数量验证,不一致会重新发送,还有其他种种验证,总之保证了数据传输安全可靠   这一章主要介绍使用套接字,编写一个tcp协议客户端和服务端.同样要用到上一章节提到小

网络编程TCP/IP与UDP实现客户端与客户端聊天

一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成.IP层负责网络主机的定位,数据传输的路由,由IP地址可以唯一的确定Internet上的一台主机.TCP层负责面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象. 二.TCP与UDP TCP是一种面向连接的保证可靠传输的协议

Python的网络编程[1] -&gt; FTP -&gt; 使用 ftplib 建立 FTP 客户端

使用 ftplib 建立 FTP 客户端 用于建立FTP Client,与 pyftplib 建立的 Server 进行通信. 快速导航 1. 模块信息 2. 建立 FTP 客户端 1. 模块信息 1.1 常量 / Constants FTP_PORT = 21 标准的FTP协议服务端端口 1.2 类 / Class 1.2.1 FTP()类 ftp = FTP() 无需参数传入直接生成FTP的客户端实例 1.2.1.1 connect()方法 函数调用: ftp.connect(address

linux网络编程:使用单进程实现多客户端通信

服务端: //回射服务器 //避免僵尸进程 #include "unistd.h" #include "sys/types.h" #include "sys/socket.h" #include "sys/wait.h" #include "netinet/in.h" #include "arpa/inet.h" #include "stdlib.h" #includ

java 网络编程 TCP协议 java 服务器和客户端 java socket编程

一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程:        先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请求,服务端监听到这次请求后向客户端发回接受消息,连接建立,启动一个线程去处理这次请求,然后继续死循环监听其他请求.客户端输入字符串后按回车键,向服务器发送数据.服务器读取数据后回复客户端数据.这次请求处理完毕,启动的线程消亡.如果客户端接收到 "OK" 之外的返回数据,会再次

网络编程中,如果直接先启动客户端,没有启动服务端,出现下面这样的问题

上边显示的连接被拒绝. 上边的运行客户端是基于TCP协议的 因此,我们需要先启动服务端,然后再启动客户端. 原文地址:https://www.cnblogs.com/studybrother/p/10355448.html

Java 网络编程案例三:多个客户端上传文件

需求:每一个客户端启动后都可以给服务器上传一个文件,服务器接收到文件后保存到一个upload目录中.可以同时接收多个客户端的文件上传. 分析: (1)服务器端要“同时”处理多个客户端的请求,那么必须使用多线程,每一个客户端的通信需要单独的线程来处理. (2)服务器保存上传文件的目录只有一个upload,而每个客户端给服务器发送的文件可能重名,所以需要保证文件名的唯一.我们可以使用“时间戳”作为文件名,而后缀名不变 (3)客户端需要给服务器上传文件名(含后缀名)以及文件内容.而文件名是字符串,文件

linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)

单客户端和服务端的通信(基于UDP)   代码 服务端代码socket3.c #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<unistd.h> #include<stdlib.h> #include<stdio.h> #include<string.h> #in