.net socket客户端实例代码分享

客户端代码

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Net;

using System.Threading;

using System.Net.Sockets;

namespace W.Common

{

public class CacheSocket

{

public Socket skClient;

public string ip = string.Empty;

public int port = -1;

public int netID;

// public int timeSleep = 1;

//每次接收发送的临时信息

private byte[] sendData;//发送的信息

private byte[] receiveData = new byte[1024];//接收信息

private int receiveN;

private bool isErr = false;

//--------

public CacheSocket(int pNetID)

{

this.netID = pNetID;

GetConfig();

Connection();

Cmd("netid:" + this.netID);

}

public CacheSocket(int pNetID, string pIP, int pPort)

{

this.ip = pIP;

this.port = pPort;

Connection();

Cmd("netid:" + pNetID);

}

public string Cmd(string key)

{

lock (this)//一个信息发送后再接收为一次完成过程

{

this.sendData = Encoding.UTF8.GetBytes(key);

try

{

this.skClient.Send(this.sendData);

}

catch (Exception ex)

{

isErr = true;

("Send" + ex.Message).WriteLine();

ReSocket(() => { this.skClient.Send(this.sendData); });

}

try

{

this.receiveN = this.skClient.Receive(this.receiveData);

}

catch (Exception ex)

{

isErr = true;

ReSocket(() => { this.receiveN = this.skClient.Receive(this.receiveData); });

("Receive" + ex.Message).WriteLine();

}

return Encoding.UTF8.GetString(this.receiveData, 0, this.receiveN);

}

}

public delegate void ReSocket_D();

private void ReSocket(ReSocket_D d)

{

if (isErr)

{

Connection();

this.sendData = Encoding.UTF8.GetBytes("netid:" + this.netID);

this.skClient.Send(this.sendData);

this.receiveN = this.skClient.Receive(this.receiveData);

if (Encoding.UTF8.GetString(this.receiveData, 0, this.receiveN) != "1")

{

}

d();

this.isErr = false;

}

}

#region 获取IP和端口

private void GetConfig()

{

this.ip = "127.0.0.1";

this.port = 1234;

}

#endregion

#region 连接套接字

private void Connection()

{

this.skClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

IPEndPoint ie = new IPEndPoint(IPAddress.Parse(this.ip), this.port);//服务器的IP和端口

skClient.Connect(ie);

byte[] data = new byte[7];

this.receiveN = this.skClient.Receive(data);

string s = Encoding.UTF8.GetString(data, 0, this.receiveN);

if (s != "success")

{

throw new Exception("连接不成功" + s);

}

}

#endregion

}

}

使用方法



代码如下:

public static readonly CacheSocket cac=new CacheSocket(2);

cac.Cmd("发送内容");

(0)

相关推荐

  • 基于Socket的网络连接 Flex与.NET互操作(一)

    ActionScript 3.0提供了通过Socket连接的方式与服务器端通信.这点是超越传统B/S结构的重要特征.这样使得网络通信可以即时连接,避免了HTTP协议无状态连接的弊病.ActionScript 3.0使用XMLSocket类进行连接.需要注意的是使用XMLSocket类进行Socket连接时,不能自动穿过防火墙.要想穿过防火墙连接,则需要使用基于HTTP协议的RTMP协议. 通过查阅Adobe提供的API文档可以了解到,XMLSocket提供了四个公开方法: .XMLSocket(

  • java.net.SocketException: Connection reset 解决方法

    自从SEOTcs系统11月份24日更新了一下SEO得分算法以来,一直困扰我的一个问题出现了,java的数据job任务,在执行过程中会经常报以下的错误: "2011-12-03 18:00:32 DefaultHttpClient [INFO] I/O exception (java.net.SocketException) caught when processing request: Connection reset by peer: socket write error2011-12-03

  • Visual C#.Net 网络程序开发-Socket篇第1/2页

    Visual C#.Net 网络程序开发-Socket篇   作者: 宋华 作者: www.ASPCool.com Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类可以开发多种网络应用程序..Net类采用的分层结构允许应用程序在不同的控制级别上访问网络,开发人员可以根据需要选择针对不同的级别编制程序,这些级别几乎囊括了Internet的所有需要-

  • Asp.net Socket客户端(远程发送和接收数据)

    复制代码 代码如下: /*************************************** * 对象名称: SocketObj * 功能说明: 远程发送与接收 * 试用示例: * using EC; //引用空间名 * string url = "218.75.111.74"; // URL也可以是(http://www.baidu.com/)这种形式 * int port = 8000; //端口 * string SendStr = "domainname\n

  • .net的socket异步通讯示例分享

    1.首先添加两个windows窗体项目,一个作为服务端server,一个作为客户端Client 2.然后添加服务端代码,添加命名空间,界面上添加TextBox控件 复制代码 代码如下: using System.Net;using System.Net.Sockets; 3.FormLoad方法添加代码 复制代码 代码如下: private void Form1_Load(object sender, EventArgs e)        {            IPEndPoint epS

  • .net socket客户端实例代码分享

    客户端代码 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Net; using System.Threading; using System.Net.Sockets; namespace W.Common { public class CacheSocket { public Socke

  • Java Socket编程服务器响应客户端实例代码

    通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; impo

  • C语言中的socket编程实例代码

    前不久刚看完<c primer plus>,收获颇丰,对于C语言也有了更全面的认识,对于模块化和数据结构也有了更多的想法,之前学过C语言,但很多已经记不起了,知识很零散,这也是我看这本书的原因. 之后一段时间都会在进一步学习编程的同时研究socket通讯,目标是要将socket研究透,设计出自己的框架,以后从事服务器开发和构架应该也会大有裨益. 好了,废话不多说,奉上网上找的源码. /* window socket 服务端编程测试 */ #include <stdio.h> //用

  • iOS实现左右可滑动的选择条实例代码分享

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewController @end RootViewController.m #import "RootViewController.h" //引入头文件 #import "SVSegmentedControl.h" @interface RootView

  • Android连接服务器端的Socket的实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所述: package com.exa mple.esp8266; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket; import android.app.Activity; import android.os.Bundle; i

  • Java编程几个循环实例代码分享

    有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** * 1.循环输出1到100之间所有能被3或能被4整除的数. * @author ztw * */ public class Practice01 { public static void main(String[] args) { for (int i=1;i<=100;i++){ //判断下是否

  • Java反射机制实例代码分享

    本文旨在对Java反射机制有一个全面的介绍,希望通过本文,大家会对Java反射的相关内容有一个全面的了解. 阅读本文之前,大家可先行参阅<重新理解Java泛型>. 前言 Java反射机制是一个非常强大的功能,在很多大型项目比如Spring, Mybatis都可以看见反射的身影.通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,同时也可以解决Java泛型擦除等令人苦恼的问题.本文我们就从实际应用的角度出发,来应用一下Java的反射机制. 反射

  • python matplotlib画图实例代码分享

    python的matplotlib包支持我们画图,有点非常多,现学习如下. 首先要导入包,在以后的示例中默认已经导入这两个包 import matplotlib.pyplot as plt import numpy as np 然后画一个最基本的图 t = np.arange(0.0, 2.0, 0.01)#x轴上的点,0到2之间以0.01为间隔 s = np.sin(2*np.pi*t)#y轴为正弦 plt.plot(t, s)#画图 plt.xlabel('time (s)')#x轴标签 p

  • Java下http下载文件客户端和上传文件客户端实例代码

    一.下载客户端代码 package javadownload; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * @说明 导出虚拟机 * @author wxt * @version 1

  • java date类与string类实例代码分享

    Date类用来指定日期和时间,其构造函数及常用方法如下: publicDate() 从当前时间构造日期时间对象. publicStringtoString() 转换成字符串. publiclonggetTime() 返回自新世纪以来的毫秒数,可以用于时间计算. [例3.10]测试执行循环花费的时间(数量级为毫秒),具体时间情况如图3.9所示.源程序代码如下: //程序文件名为UseDate.java import java.util.Date; public class UseDate { pu

随机推荐