asp.net与WinForm之间socket通信的问题
我想实现的功能是:在aspx页面点击发送按钮后,可以在winform界面的richtextbox中显示发送的消息,现在遇到的问题是点击aspx页面的连接后,可以连接成功,但点击发送按钮,服务器端却不显示发送的数据!!求解啊
winform服务器端代码:
private void button1_Click(object sender, EventArgs e)
{
IPAddress ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
//步骤1 创建网络端点IPEndPoint
IPEndPoint myServer = new IPEndPoint(ip, 888);
//步骤2 创建套接字Socket
s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//步骤3 套接字绑定到网络端点
s1.Bind(myServer);
label1.Text = ip+": 888 \n等待客户端连接......";
th = new Thread(new ThreadStart(AA));
th.Start();
}
void AA()
{
//步骤4 监听
s1.Listen(5);
//步骤5 接受客户端连接
s2 = s1.Accept();
//步骤6 判断连接状态
if (s2.Connected)
{
label1.Text = "已有客户端连接!";
//步骤7 循环接收客户端消息
while (true)
{
byte[] bb = new byte[1024];
int i = s2.Receive(bb);
string removeMsg = Encoding.Unicode.GetString(bb, 0, i);
label1.Text = removeMsg;
richTextBox1.AppendText(removeMsg + "++");
richTextBox1.ScrollToCaret();
}
}
else
{
MessageBox.Show("FAIL");
}
}
客户端后台代码:
Socket socket;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
IPAddress ip = IPAddress.Parse("192.168.1.10");
IPEndPoint removeServer = new IPEndPoint(ip, 888);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(removeServer);
if (socket.Connected)
{
Label1.Text = "连接服务器成功!!";
}
}
protected void Button2_Click(object sender, EventArgs e)
{
string sendStr = "消息来了";
byte[] bs = Encoding.Unicode.GetBytes(sendStr); //转换编码
try
{
socket.Send(bs, bs.Length, 0); //发送消息
}
catch { }
}
[最优解释]
要用COM组件吧
[其他解释]
仅仅是连接上了,但是没有接收
[其他解释]
用WCF。
[其他解释]
虽然没用过,个人觉得webform与winform之间的通信总需要什么东西建立一下,像网页QQ与软件QQ一样。找找这种关系。
[其他解释]
求解答啊
[其他解释]
详细点啊
[其他解释]
没人能解答的详细点嘛
[其他解释]
顶起来
[其他解释]
虽然过时了。。还是回答一下,给看到这篇帖子的人一个思路
其实楼主的问题并不是Socket的问题,服务器可以接收到消息
[其他解释]
晕 一不小心点到提交了。。。还没说完。。。
AA方法是通过线程启动的,貌似无法在线程中更改winform界面上控件的属性,这属于跨线程访问。。。是个很严肃的问题,需要托管机制。。。。
所以,你看不到winform界面的变化