TcpListener、TcpClient

1.TcpClient

using System;
using System.Text;
using System.Net.Sockets;

namespace tcpclient
{
    class tcpclient
    {
        static void Main(string[] args)
        {
            try
            {
                //建立客户端套接字
                TcpClient tcpclnt = new TcpClient();
                Console.WriteLine("正在连接服务器...");

                //连接服务器
                tcpclnt.Connect("127.0.0.1", 8081);

                //得到客户端的流
                NetworkStream stm = tcpclnt.GetStream();
                while (true)
                {
                    Console.Write("客户端说:");
                    string str = Console.ReadLine();//输入说话内容
                    //发送字符串
                    System.Text.UTF8Encoding utf8 = new UTF8Encoding(); //可以处理中文
                    byte[] ba = utf8.GetBytes(str);
                    stm.Write(ba, 0, ba.Length);

                    //接收从服务器返回的信息
                    byte[] bb = new byte[2048];
                    int k = stm.Read(bb, 0, 100);
                    //输出服务器端返回的信息
                    Console.WriteLine("服务器说:" + utf8.GetString(bb, 0, k));
                }
                tcpclnt.Close();

            }
            catch (Exception e)
            {
                Console.WriteLine("错误..." + e.StackTrace);
            }
        }

    }
}

2.TcpListener

using System;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace tcpchater
{
    class tcpserver
    {
        static void Main(string[] args)
        {
            try
            {
                //初始化监听,端口为8001
                TcpListener myList = new TcpListener(IPAddress.Parse("127.0.0.1"), 8081);
                //开始监听服务器端口
                myList.Start();

                Console.WriteLine("启动服务器端,端口服务...");
                Console.WriteLine("本地节点为:" + myList.LocalEndpoint);//LocalEndpoint属性 标识正用于侦听传入客户端连接请求的本地网络接口和端口号
                Console.WriteLine("等待客户端连接...");

                //等待处理接入连接请求
                Socket s = myList.AcceptSocket();

                //新建立的连接用套接字s表示
                Console.WriteLine("客户端连接来自 " + s.RemoteEndPoint + " 已上线.");
                while (true)
                {
                    System.Text.UTF8Encoding utf8 = new UTF8Encoding(); //可以处理中文
                    //接收客户信息
                    byte[] b = new byte[2048];
                    int k = s.Receive(b);
                    Console.Write("客户端说:" + utf8.GetString(b, 0, k));
                    Console.WriteLine();

                    Console.Write("服务器端说:");
                    //处理客户端请求,给客户端回应
                    string str = Console.ReadLine();
                    s.Send(utf8.GetBytes(str));
                }
                //释放资源,结束监听
                s.Close();
                myList.Stop();

            }
            catch (Exception e)
            {
                Console.WriteLine("错误..." + e.StackTrace);
            }
        }
    }
}
时间: 2024-10-31 20:00:04

TcpListener、TcpClient的相关文章

(1) Socket网络编程(C#)----TcpListener 与 TcpClient

◇TcpListener 用于阻止同步模式下侦听和接受传入连接请求.(用于侦听) ◇我们先来做一件事情,对本地机器上某一端口的侦听. ◇因为如果想要与外界进行通信,第一件要做的事情就是开启对端口的侦听,这就像为计算机打开了一个“门”,所有向这个“门”发送的请求(“敲门”)都会被系统接收到. ◇在C#中可以通过下面几个步骤完成,首先使用本机Ip地址和端口号创建一个System.Net.Sockets.TcpListener类型的实例,然后在该实例上调用Start()方法,从而开启对指定端口的侦听.

TCPListener和TCPClient之间的通信代码

<服务端> using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net.Sockets;using System.Net;using System.Threading.Tasks; namespace TCPListener_服务端{ class Program { static void Main(string[] args) { //1.创建Socket

c#网络编程使用tcpListener和tcpClient

引自:http://ilewen.com/questions/514 在本教程中,我会向你展示如何用C#建立一个线程中的TCP服务端.如果你用过windows的sockets编写程序,你就知道有多麻烦.感谢.net框架,使得网络编程变得更容易了. 我们将建立一个非常简单的的服务器接受客户端连接,并可以发送和接收数据.服务器为每一个连接客户端产生一个线程,从理论上讲,可以接受多个连接(虽在实践中,Windows对此是有限制).下面看代码: using System; using System.Te

muduo::Connector、TcpClient分析

Connector TcpClient Connector Connector用来发起连接.在非阻塞网络中,主动发起连接比被动接收连接更为复杂,因为要考虑错误处理,还要考虑重试. 主要难点在于 1.socket是一次性的,一旦出错无法恢复:只能关闭重来.使用新的fd后,用新的channel. 2.错误代码与acce(2)不同.及时是socket可写,也不意味着已经成功建立连接,还需要用getsockopt(sockfd, SOL_SOCKET, SO_ERROR, --)再次确认. 3.重试的间

Tcpclient简单聊天程序

以前C/S通讯这一块都是基于套接字(Sockets)编程,但是面对业务逻辑复杂的C/S系统,通讯这一块往往都是被封装好了的,前几天写的一个小小窗体聊天程序,主要是练习一下C#封装的TcpListener.TcpClient以及NetworkStream的使用,直接看图上代码: [csharp] view plaincopyprint? using System; using System.Drawing; using System.Collections; using System.Compon

C# TCP应用编程三 异步TCP应用编程

利用TcpListener和TcpClient类在同步方式下接收.发送数据以及监听客户端连接时,在操作没有完成之前一直处于阻塞状态,这对于接受.发送数据量不大的情况或者操作勇士较短的情况下是比较方便的.但是,对于执行完成时间可能较长的任务,如传送大文件等,使用同步操作可能就不太合适了,这种情况下,最好的办法是使用异步操作. 所谓异步操作方式,就是我们希望让某个工作开始以后,能在这个工作尚未完成的时候继续处理其他工作.就行我们(主线程)安排A(子线程A)负责处理客人来访时办理一系列登记手续.在同步

你也可以写个聊天程序 - C# Socket学习1

阅读目录 简述 一些基础类 利用Socket编写聊天程序 利用TCP编写聊天程序 结束 简述 我们做软件工作的虽然每天都离不开网络,可网络协议细节却不是每个人都会接触和深入了解.我今天就来和大家一起学习下Socket,并写一个简单的聊天程序. 一些基础类 首先我们每天打开浏览器访问网页信息都是使用的HTTP/HTTPS协议,而HTTP是通过的TCP建立的连接.TCP底层又是通过的Socket套接字进行的通信.所以他们之间的抽象关系是: 我们在学习Socket编程的时候可能会需要用到IPEndPo

九、Socket之TCP编程

TCP简介 TCP是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务. TCP最主要的特点: (1)是面向连接的传输层协议: (2)每个TCP连接只能有两个端点,而且只能一对一通信,不能一点对多点直接通信. (3)通过TCP连接传送的数据,能保证数据无差错.不丢失.不重复地准确到达接收方,并且保证各数据到达的顺序与数据发出的顺序相同. (4)数据以字节流的方式传输. (5)传输的数据无消息

C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)

一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件:复制代码 //文件流:读取 FileStream fileStream = File.Open(@"D:\test.txt", FileMode.Open);//初始化文件流 byte[] array = new byte[fileStream.Length];//初始化字节数组,用来暂存读取到的字节 fileStream.Read(array, 0, array.Length);/