socket测试远程地址能否连接并为连接设置超时
public class TestConnect
{
string hostIp = "";
int port = ;
public string recMsg = "";
Socket socketC = null;
private readonly ManualResetEvent TimeoutObject = new ManualResetEvent(false);
public TestConnect(string hostIp, int port)
{ this.hostIp = hostIp;
this.port = port;
}
public bool connect()
{
///创建终结点(EndPoint)
IPAddress ip = IPAddress.Parse(hostIp);//把ip地址字符串转换为IPAddress类型的实例
IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的端口和ip初始化IPEndPoint类的新实例
///创建socket
socketC = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字
try
{ return Connect(ipe,); } catch (SocketException ex)
{ socketC.Close();
socketC = null; return false;
} }
/// <summary> /// Socket连接请求 /// </summary> /// <param name="remoteEndPoint">网络端点</param> /// <param name="timeoutMSec">超时时间</param> public bool Connect(IPEndPoint remoteEndPoint, int timeoutMSec)
{ TimeoutObject.Reset(); socketC = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socketC.BeginConnect(remoteEndPoint, CallBackMethod, socketC); //阻塞当前线程 if (TimeoutObject.WaitOne(timeoutMSec, false))
{ return true; } else
{ return false; } } //--异步回调方法 private void CallBackMethod(IAsyncResult asyncresult)
{ //使阻塞的线程继续
Socket socket = asyncresult.AsyncState as Socket; if (socket.Connected)
{
socket.EndConnect(asyncresult); } TimeoutObject.Set(); }
public void testOnline(string msg)
{
socketC.Send(Encoding.GetEncoding("gb2312").GetBytes(msg)); try {
//创建一个通信线程
ParameterizedThreadStart pts = new ParameterizedThreadStart(ServerRecMsg);
Thread thr = new Thread(pts);
thr.IsBackground = true;
//启动线程
thr.Start(socketC);
} catch { throw ;} } /// <summary>
/// 接收客户端发来的信息
/// </summary>
/// <param name="socketClientPara">客户端套接字对象</param>
private void ServerRecMsg(object socketClientPara)
{
Socket socketServer = socketClientPara as Socket;
byte[] arrServerRecMsg = new byte[];
int len;
while ((len = socketServer.Receive(arrServerRecMsg)) != )
{ //将机器接受到的字节数组转换为人可以读懂的字符串
recMsg = Encoding.Default.GetString(arrServerRecMsg, , len); if (recMsg == "online")
{
break;
}
} } }
socket测试远程地址能否连接并为连接设置超时的更多相关文章
- socket测试远程地址能否连接并为连接设置超时(转)
public class TestConnect { string hostIp = ""; int port = 3314; public string recMsg = & ...
- java測试网络连接是否成功并设置超时时间
/** * 获取RMI接口状态 * * @return "0":服务正常,"1": 连接报错,"2":连接超时 */ @Override p ...
- 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 数据库连接不释放测试 连接池 释放连接 关闭连接 有关 redis-py 连接池会导致服务器产生大量 CLOSE_WAIT 的再讨论以及一个解决方案
import pymysqlfrom redis import Redisimport time h, pt, u, p, db = '192.168.2.210', 3306, 'root', 'n ...
- Java 测试URL地址是否能正常连接
public static int testWsdlConnection(String address) throws Exception { int status = 404; try { URL ...
- Socket的协议地址属性
首先列举所需要的头文件 #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #in ...
- TCP/IP,http,socket,长连接,短连接
TCP/IP TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输层中有TCP协议与UDP协议. 在应 ...
- (转载)http和socket之长连接和短连接区别
TCP/IPTCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.在传输层中有TCP协议与UDP协议.在应用层有: ...
- Socket的长连接和短连接
讨论Socket必讨论长连接和短连接 一.长连接和短连接的概念 1.长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接:后者是每次请求,都新建 ...
- http和socket之长连接和短连接区别【转】
转自:https://blog.csdn.net/mengyafei43/article/details/25195445 TCP/IP TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层 ...
随机推荐
- Octopus系列之模板快速开发手册
公共代码 html_header_1 <title>${sitename}-${seotitle}</title> <meta http-equiv="Cont ...
- iOS开发UI篇—xib的简单使用
iOS开发UI篇—xib的简单使用 一.简单介绍 xib和storyboard的比较,一个轻量级一个重量级. 共同点: 都用来描述软件界面 都用Interface Builder工具来编辑 不同点: ...
- iOS开发UI篇—UIScrollView控件实现图片轮播
iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 二.实现代码 storyboard中布局 代码: #import "YYV ...
- PHP过滤外部链接及外部图片 添加rel="nofollow"属性
原来站内很多文章都是摘录的外部文章,文章里很多链接要么是时间久了失效了,要么就是一些测试的网址,如:http://localhost/ 之类的,链接多了的话,就形成站内很多死链接,这对SEO优化是很不 ...
- 分享记录我的Linux系统入门学习经验
人生很多事情都是巧合,或者说命中注定.就拿Linux于我来说,大学期间也修了Linux基础这门课,但是从来没有想到自己会从事与Linux相关的工作,更没有想过自己可以通过Linux获取更多的东西. 真 ...
- java中怎么在table上显示数据
连接oracle:String result = ""; // 查询结果字符串 String sql = "select * from test"; // SQ ...
- 什么是CPA, CPS, CPT?
在互联网上或移动端进行产品推广时,经常听到很多术语,什么CPA,CPS,CPT等等.不知是怎么来的,今天网上搜一下术语,在这里做一下笔记. CPA(Cost Per Action) 每行动成本. CP ...
- 原生javascript和jquery实现简单的ajax例子
后台C#代码 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/p ...
- JVM-类加载机制
虚拟机类加载机制 虚拟机把描述的类的数据从class文件加载到内存后,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 类加载的时机 类被 ...
- Android 自动生成表格
Layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...