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 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' の初回例外が発生しました
編集:
このようなものが機能しています..しかし、タイマーのすべてのティックでサーバーに再接続する必要があります..1つの接続を確立し、タイマーのすべてのティックが再接続せずにデータの読み取り/送信を行うことは可能ですか?
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();
}