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

◇TcpListener 用于阻止同步模式下侦听和接受传入连接请求。(用于侦听)

◇我们先来做一件事情,对本地机器上某一端口的侦听。

◇因为如果想要与外界进行通信,第一件要做的事情就是开启对端口的侦听,这就像为计算机打开了一个“门”,所有向这个“门”发送的请求(“敲门”)都会被系统接收到。

  ◇在C#中可以通过下面几个步骤完成,首先使用本机Ip地址和端口号创建一个System.Net.Sockets.TcpListener类型的实例,然后在该实例上调用Start()方法,从而开启对指定端口的侦听。

  ◇创建一个控制台程序,名为MyTcpListener具体代码,如下:

 1 using System.Net;               // 引入这两个命名空间,以下同
 2 using System.Net.Sockets;
 3 using ... // 略
 4
 5 class Server {
 6     static void Main(string[] args) {
 7         Console.WriteLine("Server is running ... ");
 8         IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
 9         TcpListener listener = new TcpListener(ip, 8500);
10
11         listener.Start();           // 开始侦听
12         Console.WriteLine("Start Listening ...");
13
14         Console.WriteLine("\n\n输入\"Q\"键退出。");
15         ConsoleKey key;
16         do {
17             key = Console.ReadKey(true).Key;
18         } while (key != ConsoleKey.Q);
19     }
20 }

  ◇说明:我们利用TcpListener类的构造函数,实例化出了一个listener对象,监听了127.0.0.1(也就是本地机器)的8500端口。我们可以在“运行——》cmd——》利用命令netstate -an”来查看我们当前机器所监听的状态(可以找到这个8500端口),这里就不演示了。

◇TcpClient类是用于在同步阻塞模式下通过网络来连接、发送和接受数据流。(用于请求)

  ◇每创建一个新的TcpClient便相当于创建了一个新的套接字Socket去与服务端通信,.Net会自动为这个套接字分配一个端口号,上面说过,TcpClient类不过是对Socket进行了一个包装。创建TcpClient类型实例时,可以在构造函数中指定远程服务器的地址和端口号。这样在创建的同时,就会向远程服务端发送一个连接请求(“握手”),一旦成功,则两者间的连接就建立起来了。也可以使用重载的无参数构造函数创建对象,然后再调用Connect()方法,在Connect()方法中传入远程服务器地址和端口号,来与服务器建立连接。

  ◇创建一个控制台程序,名为MyTcpClient,具体代码如下:

 1 class Client {
 2     static void Main(string[] args) {
 3
 4         Console.WriteLine("Client Running ...");
 5         TcpClient client = new TcpClient();
 6         try {
 7             client.Connect("localhost", 8500);      // 与服务器连接
 8         } catch (Exception ex) {
 9             Console.WriteLine(ex.Message);
10             return;
11         }
12         // 打印连接到的服务端信息
13         Console.WriteLine("Server Connected!{0} --> {1}",
14             client.Client.LocalEndPoint, client.Client.RemoteEndPoint);
15
16         // 按Q退出
17     }
18 }

  ◇说明:其中Connect()方法中的参数就是需要连接主机的ip地址号以及端口号。

◇这时候我们就可以先运行MyTcpListener(不要关掉),然后再运行MyTcpClient,看看运行的结果如何。

时间: 2024-08-11 20:01:28

(1) Socket网络编程(C#)----TcpListener 与 TcpClient的相关文章

c#网络编程使用tcpListener和tcpClient

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

socket 网络编程快速入门(一)教你编写基于UDP/TCP的服务(客户端)通信

因为UNIX和Win的socket大同小异,为了方便和大众化,这里先介绍Winsock编程. socket 网络编程的难点在入门的时候就是对基本函数的了解和使用,因为这些函数的结构往往比较复杂,参数大部分都是结构体,令人难以记忆和理解. 但是一旦我们知道这些函数包括其参数的具体含义,socket网络编程也就变得不是那么复杂.这里不赘述 具体函数的详细含义,网络上有很多的文章,同时笔者建议大家参考 MSDN,对返回值,参数等会有更好的理解. 以下均为单线程的简单实例,多线程的请关注下一篇文章. (

socket 网络编程高速入门(一)教你编写基于UDP/TCP的服务(client)通信

由于UNIX和Win的socket大同小异,为了方便和大众化,这里先介绍Winsock编程. socket 网络编程的难点在入门的时候就是对基本函数的了解和使用,由于这些函数的结构往往比較复杂,參数大部分都是结构体,令人难以记忆和理解. 可是一旦我们知道这些函数包含其參数的详细含义,socket网络编程也就变得不是那么复杂. 这里不赘述 详细函数的详细含义.网络上有非常多的文章.同一时候笔者建议大家參考 MSDN.对返回值,參数等会有更好的理解. 下面均为单线程的简单实例,多线程的请关注下一篇文

Socket网络编程--网络爬虫(1)

我们这个系列准备讲一下--网络爬虫.网络爬虫是搜索引擎系统中十分重要的组成部分,它负责从互联网中搜集网页,采集信息,这些网页信息用于建立索引从而为搜索引擎提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果.网络爬虫的基本工作原理: (1)从一个初始URL集合中挑选一个URL,下载该URL对应的页面: (2)解析该页面,从该页面中抽取出其包含的URL集合,接下来将抽取的URL集合再添加到初始URL集合中: (3)重复前两个过程,直到爬虫达到某种停止

windows下的socket网络编程(入门级)

windows下的socket网络编程 clinet.c 客户端 server.c 服务器端 UDP通信的实现 代码如下 已经很久没有在windows下编程了,这次因为需要做一个跨平台的网络程序,就先写了个简单的winSocket网路通信的例子,以便以后用到的时候有个参考. windows下使用winsock编程与linux/unix的区别在于windows下需要先有一个初始化的操作,结束的时候需要一个清理的操作.还有windows下编译的时候需要连接ws32_lib库. 大致过程如下 1.初始

Linux Socket 网络编程

Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后,过段时间不看,重新拾起这些知识的时候又要从头开始,所以,在这里做个笔记也算是做个模板,以后可以直接从某一个阶段开始接着玩... 1. socket套接字介绍 socket机制其实就是包括socket, bind, listen, connect, accept等函数的方法,其通过指定的函数实现不同

linux下C语言socket网络编程简例

转自:http://blog.csdn.net/kikilizhm/article/details/7858405 这里给出在linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后打印出来,然后关闭.程序里有详细的说明,其中对具体的结构体和函数的实现可以参考其他资料. 程序说明: 这里服务器的端口号和ip地址使用固定的设置,移植时可以根据具体情况更改,可以改写为参数传递更好,这里为了方便,使用固定的. 移

Socket网络编程 详细过程(转)

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信? 2.Socket是什么? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 3.3.listen().co

Socket网络编程初探

MarkdownPad Document Socket网络编程初探 客户端/服务器架构 即C/S架构,其实web服务在某种意义上也算是C/S架构 一个特点是服务器端持续运行对外提供服务 为何学习socket一定要先学习互联网协议: C/S架构的软件是基于网络进行通信的 网络的核心就是一堆协议,即标准,想要开发一款基于网络通信的软件就必须遵循这些标准 socket是处在应用层和传输层中间的一组接口 说到这,那么socket到底是个什么呢?Socket是应用层与TCP/IP协议族通信的中间软件抽象层