TCP通信问题,我的TCP服务器貌似无法开启监听

代码贴出来,求帮助

using ECG_System.Dao;

using ECG_System.Mode;

using System;

using System.Collections.Generic;

using System.Configuration;

using System.Data;

using System.Data.SqlClient;

using System.Linq;

using System.Net;

using System.Net.Sockets;

using System.Text;

using System.Threading;

using System.Web;

using System.Web.Script.Serialization;

namespace ECG_System.DALL

{

public class TcpClienter

{

private static TcpClient client = null;

private static Thread[] td;//线程声明

private static string BloodO_ip = ConfigurationManager.AppSettings["BloodO_ip"];

private static string Ecg_ip = ConfigurationManager.AppSettings["Ecg_ip"];

private static string bloodP_ip = ConfigurationManager.AppSettings["bloodP_ip"];

private static string BloodO_port = ConfigurationManager.AppSettings["BloodO_port"];

private static string Ecg_port = ConfigurationManager.AppSettings["Ecg_port"];

private static string bloodP_port = ConfigurationManager.AppSettings["bloodP_port"];

public static string pid { get; set; }

public static bool isrun { get; set; }

public static bool isruning { get; set; }

public static void run()

{

List<IpAddr> list = new List<IpAddr>();   //list 存IP

var BloodOip = new IpAddr(BloodO_ip, BloodO_port);

var Ecgip = new IpAddr(Ecg_ip, Ecg_port);

var bloodPip = new IpAddr(bloodP_ip, bloodP_port);

list.Add(BloodOip);

list.Add(Ecgip);

list.Add(bloodPip);

if (isruning == false)

{

td = new Thread[3];

td[0] = new Thread(StartListen);

td[1] = new Thread(StartListen);

td[2] = new Thread(StartListen);

for (int i = 0; i < td.Length; i++)

{

td[i].Start(list[i]);

}

}

}

public static void stop()

{

if (td.Length > 0)

{

for (int i = 0; i < td.Length; i++)

{

td[i].Abort();

}

}

if (client.Connected)

{

client.Close();

isruning = false;

}

}

/// <summary>

/// 数据监听

/// </summary>

/// <param name="pid"></param>

/// <param name="isrun"></param>

public static void StartListen(object adder)

{

var message = "";

try

{

IpAddr ia = (IpAddr)adder;

using (client = new TcpClient(ia.ip, ia.port))

{

while (isrun)

{

isruning = true;

//接受连接请求

NetworkStream nstream = client.GetStream();        //获取数据流

byte[] mbyte = new byte[1024];                      //建立缓存

int i = nstream.Read(mbyte, 0, mbyte.Length);       //将数据流写入缓存

message = Encoding.Default.GetString(mbyte, 0, i);//将数据流转换为字符串

if (!string.IsNullOrEmpty(message))

{

var arr = message.Split(‘,‘);

pid = GetCard(message);

WebCache.Add("PID", pid);

if (arr.Length > 6)

{

Edata d = new Edata();

if (arr[6] == "0x0A")

{

d.BloodO = ConverToInt.toInt(arr[7]);

}

else if (arr[6] == "0x0B")

{

d.Ecg = ConverToInt.toInt(arr[7]);

}

else

{

d.bloodP = ConverToInt.toInt(arr[7]);

}

d.Pid = pid;

d.CreateDate = DateTime.Now;   //本地时间

new EdataDao().Add(d);

}

}

Thread.Sleep(1000);

}

}

}

catch (Exception)

{

stop();

}

}

private static string GetCard(string pid)

{

string result = "";

var arr = pid.Split(‘,‘); //把带逗号的字符串转换成字符串数组

if (arr.Length >= 6)

{

for (int i = 0; i < 6; i++)

{

result += arr[i] + ",";

}

}

return result.TrimEnd(‘,‘);//删除最后一个逗号

}

}

public class IpAddr

{

public IpAddr(string ip, string port)

{

this.ip = ip;

this.port = int.Parse(port);

}

public string ip { get; set; }

public int port { get; set; }

}

}

时间: 2024-10-12 18:53:04

TCP通信问题,我的TCP服务器貌似无法开启监听的相关文章

[Java聊天室服务器]实战之二 监听类

前言 学习任何一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列虽然涉及的是socket相关的知识,但学习之前,更想和广大程序员分享的是一种心境:学习是一个循序渐进的过程,心态应该随时调节,保持戒骄戒躁的状态.比如最近在看网易公开课MIT<算法导论>,老师提到,学习算法之前要计算机数学+离散数学+概率论等课程的知识,所以一直学不好算法的程序员不妨从基础入手,这都是中国式教育惹的祸啊!(此处省略一万字......)

服务器重启后Oracle监听服务没有自动启动的解决方案

最近一直在被这样一个问题烦恼,就是服务器断电重启后,Oracle监听服务没有正常自动启动(监听服务已经设置为自启动). 具体是这样的,监听服务设置为开机自启动,Oracle数据库服务设置为开机延时启动,按道理这个应该符合“先启动监听,后启动数据库服务”这个条件,但是每次断电重启后都是数据库服务正常启动了,监听服务没能启动. 查阅了一下,有这么两个说法,感觉还是挺有道理: 1.一般设置了开机自启动的服务要手动,基本是注册表不一致造成: 2.登录账号跟你安装Oracle的账号不一样,没权限启动. 针

[c#源码分享]客户端程序通过TCP通信传送&quot;小文件&quot;到服务器

源码  (不包含通信框架源码,通信框架源码请另行下载) 上一篇文章写了如何通过TCP通信发送图片到客户端,有朋友问如何传送文件,本文将就如何发送文件进行探讨. 对于比较小的文件,可以把文件转化成字节形式,用契约类包装一下,服务器收到后,再把字节转化成文件即可,这也是本文中实现的方式,这种方式的优点是比较简单灵活,缺点是不适合大文件的发送,也不能显示文件发送的进度. 基于TCP的通信机制,对于比较大的文件,这种方式是不可行的,大文件采用分段发送再合成的方式比较好,以后有时间再对如何发送大文件单独探

Java 通过实现简单的TCP通信程序来理解TCP通信

概述 TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server). 两端通信的步骤 服务端程序,需要事先启动,等待客户端的连接. 客户端主动连接服务器端,连接成功才能通信.服务端不可以主动连接客户端. 在Java中,提供了两个类用于实现TCP通信程序: 客户端:java.net.Socket类表示.创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信. 服务端:java.net.ServerSocket类表示.创建

一台Oracle数据库服务器上两个监听同时使用

记得之前Oracle原厂的工程师在例行检查时发现一台Oracle数据库服务器的上启动了两个监听,分别监听的是1521和1581端口,而且两个端口都在用,当时当作一个比较奇怪的现象,没有能理解原因是什么.最近几天在看Oracle网络配置的文档,无意间在虚拟机上启动了两个监听,就又想起了之前的问题.到底是因为什么原因呢? 下面先来还原一下整个过程. 当时是在做配置静态监听的练习,在listener.ora中配置了一个静态监听: ORCL =   (DESCRIPTION=     (ADDRESS_

Tomcat服务器无法启动socket监听端口

最近生成一个新的web服务器,在启动后无法启动socket监听,检查程序本身无问题, 找原因,只是发布时搞错.处理如下: 1.在Eclipse平台 删除原来的web server; 2.新建server 3.删除tomcat服务器conf目录 下所有文件,server下的config文件到该目录: 4.删除tomcat服务器webapps 下项目.war 及对应目录,拷新 项目.war.

C#中使用TCP通信

TCP通信需要通信双方都在线,所以需要先启动服务端进行监听,客户端才能获得连接,服务端代码: static void Main(string[] args) { TcpClient client = null; NetworkStream stream = null; byte[] buffer = null; string receiveString = null; IPAddress localIP = IPAddress.Parse("127.0.0.1"); int local

TCP通信详解

一.TCP简介 1.TCP介绍 a>TCP协议:TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为:TCP)是一种面向连接的.可靠的.基于字节流的通信协议 1.面向连接:先连接,再通信,好比打电话模型 2.可靠的,相对于UDP,TCP传输更可靠,TCP通过一序列的机制(面向连接机制.发送应答机制)来保障传输的可靠性 3.基于字节流的,UDP创建UDP socket--DGRAM:基于数据报通信方式,每一次发送的数据都是一个独立的整体,包含目标主机的

.Net TCP探索(一)——TCP服务端开发(同时监听多个客户端请求)

????最近在园子里看了大神写的(面试官,不要再问我三次握手和四次挥手),忍不住写段程序来测试一番. ????在网上找了很多例子,大多只实现了TCP点对点通讯,但实际应用中,一个服务器端口往往要监听多个客户端发来的消息. 测试工具下载:https://download.csdn.net/download/nbyanghuichao/11872360 ????本例采用System.Threading实现多线程监听,下面只介绍核心代码,省略了消息提示和错误处理,可以从我的GitHub获取完整代码:h