C# ASP.net中的TCP客户端
我正在尝试从asp web应用程序连接到tcp服务器。我使用C中的应用程序完成了这项工作,现在我想看看它是否可以在web浏览器中工作 我的代码是:C# ASP.net中的TCP客户端,c#,tcpclient,.net,C#,Tcpclient,.net,我正在尝试从asp web应用程序连接到tcp服务器。我使用C中的应用程序完成了这项工作,现在我想看看它是否可以在web浏览器中工作 我的代码是: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using Sy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace TcpWebClient
{
public partial class _Default : System.Web.UI.Page
{
private byte[] data = new byte[1024];
IPEndPoint ipep = new IPEndPoint(
IPAddress.Parse("192.168.1.20"), 12000);
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
server.Connect(ipep);
}
catch (SocketException)
{
}
}
protected void Button2_Click(object sender, EventArgs e)
{
NetworkStream ns = new NetworkStream(server);
if (ns.CanWrite)
{
ns.Write(Encoding.ASCII.GetBytes("DI"), 0, 2);
ns.Flush();
}
else
{
}
TextBox1.Text = null;
TextBox1.Text = Encoding.ASCII.GetString(data, 0, ns.Read(data, 0, data.Length));
}
}
}
什么在工作?:我已连接到tcp服务器。但当我想发送和接收一些数据时,我会遇到错误:
IOException was unhandled by user code and something like this: Operation is not supported on connected sockets (don't know if my translation to english is ok).
我做错了什么
System.dll中出现“System.IO.IOException”类型的第一次意外异常
编辑:
像这样的事情正在起作用。。但是我需要重新连接到服务器的每一个计时器的滴答声。。是否可以只进行一次连接,然后在不重新连接的情况下读取/发送数据
protected void Timer1_Tick(object sender, EventArgs e)
{
server.Connect(ipep);
NetworkStream stream = new NetworkStream(server);
Byte[] data = System.Text.Encoding.ASCII.GetBytes("data");
stream.Write(data, 0, data.Length);
data = new Byte[256];
Int32 bytes = stream.Read(data, 0, 8);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
TextBox1.Text = responseData;
server.Close();
}
您实际上回答了自己的问题:在您的第二个事件处理程序Button2\u click中没有打开连接,因为您在button1 click中打开连接,它当然会与页面一起结束其生命周期,页面的实例是根据请求创建的。 如果你不介意在应用程序范围内为所有用户共享连接,你可以将打开的连接保存在一个静态变量中,但是我真的不确定你是否真的不需要使用你在编辑中发布的代码。 如果希望connectoin在应用程序范围内可用,请将其变量定义为静态变量,但确保在首次尝试使用之前初始化/连接,可以使用.net 4中提供的惰性帮助器类确保仅在第一次需要时初始化连接一次。 如果您还需要在其他类中访问该连接,那么您可以创建一个seaparate singleton类来包装它,并以相同的方式在那里初始化它