- 浏览: 1646337 次
- 性别:
- 来自: 福州
文章分类
- 全部博客 (583)
- strust2.0 (14)
- hibernate2.0 (5)
- java (13)
- javaScript (59)
- AJAX (8)
- TFS (6)
- 其它 (20)
- CSS (23)
- asp (18)
- Dojo (5)
- 项目管理 (3)
- SQLServer (25)
- oracle (26)
- .NET (221)
- 开源系统 (6)
- 常识 (41)
- 软件架构 (1)
- My SQL (1)
- SilverLight (10)
- Flex (1)
- window7 (1)
- 网络安全 (2)
- CMS (1)
- ECShop (4)
- 邮件系统 (9)
- Linq (0)
- 淘宝店铺经营宝典 (0)
- flash插件 (1)
- Hubble.net全文检索 (1)
- 在线编辑器 (1)
- 正则表达式 (1)
- 创业 (1)
- asp.net mvc (1)
- 全文检索 (0)
- 全文检索 HubbleDotNet (1)
- Android (27)
- TFS bin (1)
最新评论
-
z小小Jean:
有具体的解决方法吗
用命名imp导入DMP时报无法解析指定的连接标识符的解决办法 -
njoiop:
这些都是常用接口,IP地址、手机归属和身份证查询接口,基站定位 ...
IP地址、手机归属和身份证查询接口 -
Fs_sky:
那导出DMP如何包含序列等其他东西?
在plsql中如何导出dmp文件 -
qiywtc:
请问该怎么判断视频的格式再选择对应的播放格式来播放啊?
asp.net各种类型视频播放代码(全) -
xinghenhouzi:
楼主说的版本不同无法导入导出是什么意思?我用10g的exp.e ...
在plsql中如何导出dmp文件
TcpClient 为 TCP 网络服务提供客户端连接。
System.Object
System.Net.Sockets.TcpClient
[C#] public class TcpClient : IDisposable
备注
TcpClient 类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。
为使 TcpClient 连接并交换数据,使用 TCP ProtocolType 创建的 TcpListener 或 Socket 必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:
•创建一个 TcpClient,并调用三个可用的 Connect 方法之一。
•使用远程主机的主机名和端口号创建 TcpClient。此构造函数将自动尝试一个连接。
注意 如果要在同步阻塞模式下发送无连接数据报,请使用 UdpClient 类。
对继承者的说明: 要发送和接收数据,请使用 GetStream 方法来获取一个 NetworkStream。调用 NetworkStream 的 Write 和 Read 方法与远程主机之间发送和接收数据。使用 Close 方法释放与 TcpClient 关联的所有资源。
示例 C#下面的示例建立 TcpClient 连接。
附:socket与TcpListener/TcpClient/UdpClient 的区别及联系
应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务。这些协议类建立在 System.Net.Sockets.Socket 类的基础之上,负责数据传送的细节。(也就是说TCPClient、TCPListener 和 UDPClient 类是用来简化Socket)
TcpClient 和 TcpListener 使用 NetworkStream 类表示网络。使用 GetStream 方法返回网络流,然后调用该流的 Read 和 Write 方法。NetworkStream 不拥有协议类的基础套接字,因此关闭它并不影响套接字。
UdpClient 类使用字节数组保存 UDP 数据文报。使用 Send 方法向网络发送数据,使用 Receive 方法接收传入的数据文报。
1.TcpClient
TcpClient 类提供了一些简单的方法,用于在同步阻止模式下通过网络来连接、发送和接收流数据。为使 TcpClient 连接并交换数据,使用 TCP ProtocolType 创建的 TcpListener 或 Socket 必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:
(1)创建一个 TcpClient,并调用三个可用的 Connect 方法之一。
(2)使用远程主机的主机名和端口号创建 TcpClient。此构造函数将自动尝试一个连接。
给继承者的说明要发送和接收数据,请使用 GetStream 方法来获取一个 NetworkStream。调用 NetworkStream 的 Write 和 Read 方法与远程主机之间发送和接收数据。使用 Close 方法释放与 TcpClient 关联的所有资源。
下面的例子给出怎么利用TcpClient连接到服务器:
2.TcpListener
TcpListener 类提供一些简单方法,用于在阻止同步模式下侦听和接受传入连接请求。可使用 TcpClient 或 Socket 来连接 TcpListener。可使用 IPEndPoint、本地 IP 地址及端口号或者仅使用端口号,来创建 TcpListener。可以将本地 IP 地址指定为 Any,将本地端口号指定为 0(如果希望基础服务提供程序为您分配这些值)。如果您选择这样做,可在连接套接字后使用 LocalEndpoint 属性来标识已指定的信息。
Start 方法用来开始侦听传入的连接请求。Start 将对传入连接进行排队,直至您调用 Stop 方法或它已经完成 MaxConnections 排队为止。可使用 AcceptSocket 或 AcceptTcpClient 从传入连接请求队列提取连接。这两种方法将阻止。如果要避免阻止,可首先使用 Pending 方法来确定队列中是否有可用的连接请求。
调用 Stop 方法来关闭 TcpListener。
下面的例子给出怎么利用TcpListener监听客户端的请求:
3.UdpClient
UdpClient 类提供了一些简单的方法,用于在阻止同步模式下发送和接收无连接 UDP 数据报。因为 UDP 是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接。但您可以选择使用下面两种方法之一来建立默认远程主机:
· 使用远程主机名和端口号作为参数创建 UdpClient 类的实例。
· 创建 UdpClient 类的实例,然后调用 Connect 方法。
可以使用在 UdpClient 中提供的任何一种发送方法将数据发送到远程设备。使用 Receive 方法可以从远程主机接收数据。
UdpClient 方法还允许发送和接收多路广播数据报。使用 JoinMulticastGroup 方法可以将 UdpClient 预订给多路广播组。使用 DropMulticastGroup 方法可以从多路广播组中取消对 UdpClient 的预订。
下面的例子演示同一主机不同端口之间的UDP通信:
监听端:
客户端:
System.Object
System.Net.Sockets.TcpClient
[C#] public class TcpClient : IDisposable
备注
TcpClient 类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。
为使 TcpClient 连接并交换数据,使用 TCP ProtocolType 创建的 TcpListener 或 Socket 必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:
•创建一个 TcpClient,并调用三个可用的 Connect 方法之一。
•使用远程主机的主机名和端口号创建 TcpClient。此构造函数将自动尝试一个连接。
注意 如果要在同步阻塞模式下发送无连接数据报,请使用 UdpClient 类。
对继承者的说明: 要发送和接收数据,请使用 GetStream 方法来获取一个 NetworkStream。调用 NetworkStream 的 Write 和 Read 方法与远程主机之间发送和接收数据。使用 Close 方法释放与 TcpClient 关联的所有资源。
示例 C#下面的示例建立 TcpClient 连接。
static void Connect(String server, String message) { try { // Create a TcpClient. // Note, for this client to work you need to have a TcpServer // connected to the same address as specified by the server, port // combination. Int32 port = 13000; TcpClient client = new TcpClient(server, port); // Translate the passed message into ASCII and store it as a Byte array. Byte[] data = System.Text.Encoding.ASCII.GetBytes(message); // Get a client stream for reading and writing. // Stream stream = client.GetStream(); NetworkStream stream = client.GetStream(); // Send the message to the connected TcpServer. stream.Write(data, 0, data.Length); Console.WriteLine("Sent: {0}", message); // Receive the TcpServer.response. // Buffer to store the response bytes. data = new Byte[256]; // String to store the response ASCII representation. String responseData = String.Empty; // Read the first batch of the TcpServer response bytes. Int32 bytes = stream.Read(data, 0, data.Length); responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); Console.WriteLine("Received: {0}", responseData); // Close everything. client.Close(); } catch (ArgumentNullException e) { Console.WriteLine("ArgumentNullException: {0}", e); } catch (SocketException e) { Console.WriteLine("SocketException: {0}", e); } Console.WriteLine("\n Press Enter to continue..."); Console.Read(); }
附:socket与TcpListener/TcpClient/UdpClient 的区别及联系
应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务。这些协议类建立在 System.Net.Sockets.Socket 类的基础之上,负责数据传送的细节。(也就是说TCPClient、TCPListener 和 UDPClient 类是用来简化Socket)
TcpClient 和 TcpListener 使用 NetworkStream 类表示网络。使用 GetStream 方法返回网络流,然后调用该流的 Read 和 Write 方法。NetworkStream 不拥有协议类的基础套接字,因此关闭它并不影响套接字。
UdpClient 类使用字节数组保存 UDP 数据文报。使用 Send 方法向网络发送数据,使用 Receive 方法接收传入的数据文报。
1.TcpClient
TcpClient 类提供了一些简单的方法,用于在同步阻止模式下通过网络来连接、发送和接收流数据。为使 TcpClient 连接并交换数据,使用 TCP ProtocolType 创建的 TcpListener 或 Socket 必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:
(1)创建一个 TcpClient,并调用三个可用的 Connect 方法之一。
(2)使用远程主机的主机名和端口号创建 TcpClient。此构造函数将自动尝试一个连接。
给继承者的说明要发送和接收数据,请使用 GetStream 方法来获取一个 NetworkStream。调用 NetworkStream 的 Write 和 Read 方法与远程主机之间发送和接收数据。使用 Close 方法释放与 TcpClient 关联的所有资源。
下面的例子给出怎么利用TcpClient连接到服务器:
using System; using System.Collections.Generic; using System.Text; using System.Net.Sockets; using System.Net; namespace tcpclient { class Program { private static int portNum = 11000; private static string hostName = Dns.GetHostName().ToString(); public static void Main(String[] args) { try { Console.WriteLine("主机名字:"+ Dns.GetHostName()); Console.WriteLine("主机IP地址:"+ Dns.GetHostAddresses(Dns.GetHostName())[0]); TcpClient client = new TcpClient(hostName, portNum); NetworkStream ns = client.GetStream(); byte[] bytes = new byte[1024]; int bytesRead = ns.Read(bytes, 0, bytes.Length); //将字节流解码为字符串 Console.WriteLine(Encoding.ASCII.GetString(bytes, 0, bytesRead)); client.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } } }
2.TcpListener
TcpListener 类提供一些简单方法,用于在阻止同步模式下侦听和接受传入连接请求。可使用 TcpClient 或 Socket 来连接 TcpListener。可使用 IPEndPoint、本地 IP 地址及端口号或者仅使用端口号,来创建 TcpListener。可以将本地 IP 地址指定为 Any,将本地端口号指定为 0(如果希望基础服务提供程序为您分配这些值)。如果您选择这样做,可在连接套接字后使用 LocalEndpoint 属性来标识已指定的信息。
Start 方法用来开始侦听传入的连接请求。Start 将对传入连接进行排队,直至您调用 Stop 方法或它已经完成 MaxConnections 排队为止。可使用 AcceptSocket 或 AcceptTcpClient 从传入连接请求队列提取连接。这两种方法将阻止。如果要避免阻止,可首先使用 Pending 方法来确定队列中是否有可用的连接请求。
调用 Stop 方法来关闭 TcpListener。
下面的例子给出怎么利用TcpListener监听客户端的请求:
using System; using System.Collections.Generic; using System.Text; using System.Net.Sockets; using System.Net; namespace tcpclient { class Program { private const int portNum = 11000; static void Main(string[] args) { bool done = false; //TcpListener listener = new TcpListener(portNum); //根据VS2005 MSDN 此方法已经过时,不再使用 // IPEndPoint类将网络标识为IP地址和端口号 TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Any, portNum)); listener.Start(); while (!done) { Console.Write("Waiting for connection..."); TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("Connection accepted."); NetworkStream ns = client.GetStream(); byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); try { ns.Write(byteTime, 0, byteTime.Length); ns.Close(); client.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } listener.Stop(); } } }
3.UdpClient
UdpClient 类提供了一些简单的方法,用于在阻止同步模式下发送和接收无连接 UDP 数据报。因为 UDP 是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接。但您可以选择使用下面两种方法之一来建立默认远程主机:
· 使用远程主机名和端口号作为参数创建 UdpClient 类的实例。
· 创建 UdpClient 类的实例,然后调用 Connect 方法。
可以使用在 UdpClient 中提供的任何一种发送方法将数据发送到远程设备。使用 Receive 方法可以从远程主机接收数据。
UdpClient 方法还允许发送和接收多路广播数据报。使用 JoinMulticastGroup 方法可以将 UdpClient 预订给多路广播组。使用 DropMulticastGroup 方法可以从多路广播组中取消对 UdpClient 的预订。
下面的例子演示同一主机不同端口之间的UDP通信:
监听端:
using System; using System.Net.Sockets; using System.Text; using System.Net; using System.Threading; namespace Udpclient2 { class Program { static void Main(string[] args) { try { UdpClient udpClient = new UdpClient(12000); string returnData = "client_end"; do { Console.WriteLine("服务器端接收数据:............................."); IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); // 此处通过引用传值,获得客户端的IP地址及端口号 Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); //此处获得客户端的数据 returnData = Encoding.UTF8.GetString(receiveBytes); //Encoding.ASCII.GetString(receiveBytes); 此处若用ASCII,不能正确处理中文 Console.WriteLine("This is the message server received: " + returnData.ToString()); Thread.Sleep(3000); Console.WriteLine("向客户端发送数据:............................."); udpClient.Connect(Dns.GetHostName().ToString(), 11000); // Sends a message to the host to which you have connected. string sendStr = "我来自服务器端:" + DateTime.Now.ToString(); Byte[] sendBytes = Encoding.UTF8.GetBytes(sendStr); //Byte[] sendBytes = Encoding.ASCII.GetBytes(sendStr); 此处若用ASCII,不能正确处理中文 udpClient.Send(sendBytes, sendBytes.Length); Console.WriteLine("This is the message server send: " + sendStr); } while (returnData != "client_end"); } catch (Exception e) { Console.WriteLine(e.ToString()); } } } }
客户端:
using System; using System.Net.Sockets; using System.Text; using System.Net; namespace Udpclient { class Program { static void Main(string[] args) { try { UdpClient udpClient = new UdpClient(11000); //向服务器发送数据 udpClient.Connect(Dns.GetHostName().ToString(), 12000); // Sends a message to the host to which you have connected. string sendStr = "我来自客户端:" + DateTime.Now.ToString(); Byte[] sendBytes = Encoding.UTF8.GetBytes(sendStr); //Byte[] sendBytes = Encoding.ASCII.GetBytes(sendStr); 此处若用ASCII,不能正确处理中文 udpClient.Send(sendBytes, sendBytes.Length); Console.WriteLine("This is the message client send: " + sendStr); //等待服务器的答复,收到后显示答复,并结束对话 IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); // 此处通过引用传值,获得客户端的IP地址及端口号 Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); //此处获得服务器端的数据 string returnData = Encoding.UTF8.GetString(receiveBytes); //Encoding.ASCII.GetString(receiveBytes); 此处若用ASCII,不能正确处理中文 Console.WriteLine("This is the message come from server: " + returnData.ToString()); udpClient.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } } }
发表评论
-
【转】C#定时执行某个程序
2015-03-16 17:33 723using System; using System. ... -
多行文本框字符数长度验证的解决方案
2012-03-02 16:04 1196在ASP.NET系统中经常会遇到验证文本框长度,比如数据库里是 ... -
【转】asp.net(c#)通过两个点的经纬度计算距离
2012-01-12 14:14 1377原理: 地球赤道上环绕地球一周走一圈共40075.04公里 ... -
【转】GSM手机短信软件的实现(C#)
2011-11-30 13:55 1278http://www.cnblogs.com/Engin/ar ... -
[转]C#开发短信收发软件的原理
2011-11-16 16:44 1645坛子里好像很多人对如何自己用C#开发手机短信有兴趣,正好我也做 ... -
Hubble.Net实现全文检索
2011-07-25 19:30 4023一、 下载安装 到Hubble.net 项目首页 http: ... -
c# 获取当前周第一天、最后一天,当前月第一天、最后一天的实现代码
2011-04-17 18:39 5265获取当前周工作日第一天、最后一天 int dayOfWee ... -
c#通过调用7z.exe实现解压文件
2011-03-05 15:47 47697-Zip 简介 7-Zip 是一款号称有着现今最高压缩比的 ... -
【转】IEnumerable 和 IEnumerator 接口
2011-03-04 17:12 2019类继承关系:public interface IQueryab ... -
【转】C#获取文件的绝对路径
2011-03-04 17:08 2474要在c#中获取路径有好多方法,一般常用的有以下五种: ... -
ListBox之间的数据项的移动操作
2010-09-29 11:04 1548<%@ Page Language="C# ... -
【转】asp.net中URL参数传值中文乱码的三种解决办法
2010-09-21 22:31 3409在做Asp.Net开发的时候,经常会遇到页面乱码的问题,下面是 ... -
【转】ASP.NET文件下载函数
2010-09-21 22:29 1396在你的Page_Load中添加这样的代码: Page.Re ... -
【转】在ASP.NET中实现多文件上传
2010-09-21 22:25 1226在以前的Web应用中,上传文件是个很麻烦的事,现在有了.NET ... -
[转]ASP.NET中常用的文件上传下载方法
2010-09-21 22:23 1809文件的上传下载是我们在实际项目开发过程中经常需要用到的技 ... -
HTML文章中截取摘要的问题[转]
2010-06-09 10:46 1866博客系统通常的做法是,在博客的首页只显示文章的摘要,点击标题进 ... -
获取 asp:Button 控件的的ComandName值的方法
2010-05-22 17:31 1244protected void btn_Save_Click ... -
ASP.NET防止用户多次登录的方法
2010-05-06 12:34 1575常见的处理方法是,在 ... -
使用 Enter 键提交表单
2010-04-27 14:04 1330一、使用 JS 代码 我们在表单里面的 TextBox (as ... -
总结一下DataGrid,DataList,Repeater
2010-04-25 17:54 1435一.数据访问控件的区别 1.功能从弱到强依次为Repeater ...
相关推荐
流式套接字:实现面向连接的TCP通信数据报套接字:实现无连接的UDP通信原始套接字:实现IP数据包通信编写自定义的新网络协议程序时,则只能用Socket类来实现。 TCP/IP网络协议 TCP/IP网络协议是传统的网络编程技术...
2.无线网络管理器不断尝试搜索,连接,认证,握手,通信数据加解密,通信虚拟时间同步,双向数据透传和监听无线信号。 3.程序本身异常情况监听和处理。 TCP/IP(Transmission Control Protocol/Internet Protocol...
在本文档中,我们将详细介绍如何利用C#语言来实现PDA与网络之间的通信,并具体探讨其中涉及到的关键技术点。 #### 二、核心知识点详解 ##### 1. 网络通信基础 网络通信是通过计算机网络进行数据交换的过程。本案例...
Java 作为一种广泛应用的编程语言,提供了丰富的网络编程接口,使得开发者能够轻松地实现基于 TCP 和 UDP 的通信。本次实验旨在通过实践操作,帮助学生深入理解 TCP 和 UDP 的工作原理,并掌握使用 Java 进行网络...
在C#中,开发人员可以使用System.Net.Sockets命名空间中的类来实现Socket编程,例如Socket类用于创建和管理Socket,TcpListener类用于监听特定端口的连接请求,TcpClient类用于客户端连接。在实际编程中,理解TCP和...
在TCP/IP模型中,TCP位于传输层,主要负责在不可靠的互联网络上提供一种可靠的数据传输服务。为了实现这一点,TCP采用了多种机制,包括错误检测、流量控制、拥塞控制等。当一个TCP客户端想要与一个TCP服务器进行通信...
通过上述示例可以看出,在.NET Framework环境下,利用 `TcpClient` 和 `TcpListener` 类,可以非常方便地实现基于TCP协议的网络通讯。这种编程方式不仅简化了开发者的工作量,也使得TCP网络编程更加直观和易于理解。
在IT行业中,网络通信是至关重要的一个领域,特别是在自动化控制和物联网应用中。Delphi 7是一款历史悠久但依然被广泛使用的RAD...通过实践和学习,你可以创建出高效、稳定的网络通信程序,实现设备间的智能互联。
总结来说,设计与实现局域网计算机终端控制管理的关键在于理解并应用 Socket 网络通信、Win32 API 编程以及 Delphi 7.0 的特性。通过这些技术,我们可以构建一个能够实时监控、预防非法操作并控制局域网内计算机的...
C#中的System.Net命名空间提供了丰富的网络通信类,如Socket和TcpClient,可用于实现这些功能。 其次,是设备控制层,涉及设备的接入和管理。C#可以利用SerialPort类进行串行通信,或者使用第三方库如Newtonsoft....
《构建基于C#的图文聊天应用:模仿QQ的UDP/TCP通信实现》 在IT行业中,即时通讯(Instant Messaging,IM)系统是不可或缺的一部分,它为用户提供快速、实时的信息交流平台。QQ作为一款广受欢迎的IM软件,其背后的...
- **CAN网络与WiFi网络的桥梁**:用户可以通过CANWIFI-600轻松实现CAN-bus网络与WirelessEthernet之间的互联互通,扩展CAN网络的应用范围。 - **支持多种工作模式**:完善的TCPServer、TCPClient和UDP工作模式支持,...
运行在TCP之上常见的网络应用协议有比如HTTP、FTP、SMTP、POP3、IMAP。 TCP是TCP/IP体系中最重要的传输协议,它提供全双工和可靠交付的服务,是大多数应用协议工作的基础。 TCP是一种面向连接(连接导向)的,可靠的,...