C#网络socket编程,可以传输,客户端退出后,主机不停的接收0

rt,用的tcpip协议,先连接上,传输数据byte数组,都没问题了,但是客户端sock.Shutdown(SocketShutdown.Both);sock.Close... rt,用的tcpip协议,先连接上,传输数据byte数组,都没问题了,但是客户端 sock.Shutdown(SocketShutdown.Both);
sock.Close();
关闭窗口后,主机接收端不停的刷0,就是接收0。
麻烦各位高手。。
另外,wince系统下的socket通信怎么搞,即电脑和一个wince系统的硬件通信。最好给个例子。答好了再给100分。
展开
 我来答
pppop3
2010-03-05 · TA获得超过316个赞
知道小有建树答主
回答量:488
采纳率:0%
帮助的人:353万
展开全部
我以前随便写的一个socket 不知道你用的上用不上

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets; //可以使用套接字
using System.Threading; //可以使用多线程

namespace threadtcpclient
{
class Threadtcpserver
{
private Socket server;
public Threadtcpserver()
{
IPAddress local = IPAddress.Parse("192.168.0.66");
IPEndPoint iep = new IPEndPoint(local, 13000);
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// 将套接字与本地终结点绑定
server.Bind(iep);

//在本地13000端口号上进行监听
server.Listen(20);
Console.WriteLine("等待客户机进行连接......");
while (true)
{
// 得到包含客户端信息的套接字
Socket client = server.Accept();

//创建消息服务线程对象
ClientThread newclient = new ClientThread(client);

//把ClientThread 类的ClientService方法委托给线程
Thread newthread = new Thread(new ThreadStart(newclient.ClientService));

// 启动消息服务线程
newthread.Start();
}
}
static void Main(string[] args)
{
Threadtcpserver instance = new Threadtcpserver();
}
}
class ClientThread
{
//connections变量表示连接数
public static int connections = 0;
public Socket service;
int i;
public ClientThread(Socket clientsocket)
{
//service对象接管对消息的控制
this.service = clientsocket;
}
public void ClientService()
{
String data = null;
byte[] bytes = new byte[1024];
if (service != null)
{
connections++;
}
Console.WriteLine("新客户连接建立:{0} 个连接数", connections);
try
{
while ((i = service.Receive(bytes)) != 0)
{
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("收到的数据: {0}", data);

// 处理客户端发来的消息,这里是转化为大写字母
data = data.ToUpper();

byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

// 发送一条应答消息
service.Send(msg);
Console.WriteLine("发送的数据: {0}", data);
}
}
catch
{

}
//关闭套接字
service.Close();
connections--;
Console.WriteLine("客户关闭连接:{0} 个连接数", connections);
}
}
}

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace threadtcpclient
{
class multithreadclient
{
static void Main(string[] args)
{
Socket client;
byte[] buf = new byte[1024];
string input;
IPAddress local = IPAddress.Parse("192.168.0.68");
IPEndPoint iep = new IPEndPoint(local, 13000);
try
{
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(iep);
}
catch (SocketException)
{
Console.WriteLine("无法连接到服务器!");
return;
}
while (true)
{
//在控制台上输入一条消息
input = Console.ReadLine();
//输入exit,可以断开与服务器的连接
if (input == "exit")
{
break;
}
try
{
//如果消息为空就不发送
if (input != "")
{
client.Send(Encoding.ASCII.GetBytes(input));
//得到实际收到的字节总数
int rec = client.Receive(buf);
Console.WriteLine(Encoding.ASCII.GetString(buf, 0, rec));
}
}
catch
{

}
}
Console.WriteLine("断开与服务器的连接......");
client.Close();
}
}
}

与硬件通信用串口啊~ AT指令 ,C#里面有个串口通信的控件serialPort 设置好端口,波特率等 就能连接了 然后通过发送ap指令 并解析接收的信息进行通信。
horsoner
2010-03-03 · TA获得超过238个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:198万
展开全部
主机接收端不停的刷0,就是接收0
应该是你的主机的代码逻辑有问题,接收数据前应该判断连接是否还存在.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我看这名能用不
2010-03-03 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:78.2万
展开全部
能接收到0了.你做个判断不就行了吗..?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式