asp.net 的 webform是客户端,我要在客户端的数据post到服务器端winform.
winform会做出相关的处理,服务器是这样处理的: 把事件触发的一些结果写入文本文件
(有想法是可以不用写入文件而直接返回客户端,但我做不到!会的朋友请告诉我,谢谢),然后把文本文件的内容
返回到客户端。客户端接收到数据并打印在页上。
这样 我用了socket了 但是一直没有成功啊!
各位朋友,请帮帮忙吧,谢谢先了。
23 个解决方案
#1
我怎么感觉你写反了
webform是客户端??
winform是服务器端?
webform是客户端??
winform是服务器端?
#2
请楼主再说一遍问题。
#3
如果倒过来,win form是客户端,web form是服务端,那根本就不用什么socket了(当然底层还是),直接发个HttpWebRequest请求就行了,所以我想楼主的情况应该是web form作为客户端, win form是服务端。
这样通讯的方法,我想到有两个办法。如果对数据的实时性要求不高,可以利用msmq或者数据库来中转,不然就用socket,下面是调试成功的部分代码:
win form服务端:
string strHostName = Dns.GetHostName();
IPHostEntry ipHostEntry = Dns.GetHostEntry(strHostName);
IPEndPoint localEndPoint = new IPEndPoint(ipHostEntry.AddressList[0], 12345);//假设监听12345端口
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(1);
string message = "";
while (message != "finish")
{
receiver = listener.Accept();
byte[] buffer = new byte[2000];
int length = receiver.Receive(buffer);//这里假设从web form来的消息很短,一次就可以接收完,如果比较长,可以把buffer的长度设的大一些,或者用循环的方法
message = Encoding.ASCII.GetString(buffer, 0, length);
}
web form:
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);
Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
receiver.Connect(remoteEndPoint);
if (receiver.Connected)
{
byte[] buffer;
buffer = Encoding.ASCII.GetBytes("abcde");//要发送的内容
receiver.Send(buffer);
}
这样通讯的方法,我想到有两个办法。如果对数据的实时性要求不高,可以利用msmq或者数据库来中转,不然就用socket,下面是调试成功的部分代码:
win form服务端:
string strHostName = Dns.GetHostName();
IPHostEntry ipHostEntry = Dns.GetHostEntry(strHostName);
IPEndPoint localEndPoint = new IPEndPoint(ipHostEntry.AddressList[0], 12345);//假设监听12345端口
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(1);
string message = "";
while (message != "finish")
{
receiver = listener.Accept();
byte[] buffer = new byte[2000];
int length = receiver.Receive(buffer);//这里假设从web form来的消息很短,一次就可以接收完,如果比较长,可以把buffer的长度设的大一些,或者用循环的方法
message = Encoding.ASCII.GetString(buffer, 0, length);
}
web form:
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);
Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
receiver.Connect(remoteEndPoint);
if (receiver.Connected)
{
byte[] buffer;
buffer = Encoding.ASCII.GetBytes("abcde");//要发送的内容
receiver.Send(buffer);
}
#4
奇怪为什么winform要做服务器端。
建议将winform的程序分好层,将业务逻辑分离出来,形成类库。
用web service做服务器端,引用业务逻辑类库。
建议将winform的程序分好层,将业务逻辑分离出来,形成类库。
用web service做服务器端,引用业务逻辑类库。
#5
同意
#6
webform socket?
客户端socket ,flash?
客户端socket ,flash?
#7
不用winform做服务器端的话 microsoft speech sdk 在asp.net中我所要的事件没有被触发出来啊
,例如 SpVoice vox = new SpVoiceClass();
然后委托:
我想要这个结果 我只能这样选择用winform做服务器啦。
我也想过用web service 但是怎么用,获得触发结果,更难啊!
各路朋友 请教啦。
,例如 SpVoice vox = new SpVoiceClass();
然后委托:
vox.Viseme += new _ISpeechVoiceEvents_VisemeEventHandler(vox_Viseme); //这两个是无法触发出来的啊,微软的一个专家说了 microsoft speech sdk 是基于COM 的程序的 asp.net没有消息循环机制,不会触发出来。
vox.Word += new _ISpeechVoiceEvents_WordEventHandler(vox_Word);
我想要这个结果 我只能这样选择用winform做服务器啦。
我也想过用web service 但是怎么用,获得触发结果,更难啊!
各路朋友 请教啦。
#8
并且把触发结果都返回客户端!这样很慢,于是我觉得很慢。
并且 客户端已关闭 就会影响到服务器 端了,
并且 客户端已关闭 就会影响到服务器 端了,
#9
请问有什么好的方法啊?谢谢先了
#10
楼主的意思是这样吧:
用winform做服务器端,webform 做客户端 然后客户端发送数据到服务器端
让服务器端处理,再返回客户端。
过程确实不简单 , 如果涉及客户端多人的时候 还要考虑服务器负载,处理问题
,
我也不懂多少
帮顶!!!
用winform做服务器端,webform 做客户端 然后客户端发送数据到服务器端
让服务器端处理,再返回客户端。
过程确实不简单 , 如果涉及客户端多人的时候 还要考虑服务器负载,处理问题
,
我也不懂多少
帮顶!!!
#11
去我的共享资源里有完整的 异步socket代码客服端和服务端 自己去下
#12
webform做客户端那你的web页面存在哪个服务器上的也是同winform放一起嘛??
webform有没有监听端口的功能不清楚。
webform有没有监听端口的功能不清楚。
#13
这是个弥天大误解!
asp.net程序永远工作在web服务器端,它只是在客户端请求时返回html字符串而已。
#14
或者你说说如何用asp.net程序post数据给winform程序吧
#15
还有“文本文件”而不是直接winform直接返回数据给请求它的asp.net程序。
唉,劝你找一个专业程序员来做这类程序。自己做多累啊。
唉,劝你找一个专业程序员来做这类程序。自己做多累啊。
#16
我的意思是将客户端webform的数据 post 到 服务器端winform
两个在同一个服务器上。
#17
对啊 楼上的说得是我想要的啊
#18
同意
#19
webform是客户端啊
winform服务端啊
大哥们!!!
请问 还有哪里不清楚哦!!!!
winform服务端啊
大哥们!!!
请问 还有哪里不清楚哦!!!!
#20
winform?难道想回到CGI的时代?不明白,sp说的对,我不知道以前在CGI时代的静态网页怎么用程序处理请求,但既然是程序,winform应该也行,但就是不知道asp.net行不行了。。。
#21
唉,直接使用数据库吧,WebForm把数据Post到数据库里,WinForm定时检查数据库,操作,完成
不用客HTTP、SOCKET
不用客HTTP、SOCKET
#22
说到底就是web和winform通讯吧,用socket、remoting、wcf都可以,有文件、数据库做介质也可以。
但是你要用post,那你的winform首先需要是一个web服务器。
但是你要用post,那你的winform首先需要是一个web服务器。
#23
不懂你意思
#1
我怎么感觉你写反了
webform是客户端??
winform是服务器端?
webform是客户端??
winform是服务器端?
#2
请楼主再说一遍问题。
#3
如果倒过来,win form是客户端,web form是服务端,那根本就不用什么socket了(当然底层还是),直接发个HttpWebRequest请求就行了,所以我想楼主的情况应该是web form作为客户端, win form是服务端。
这样通讯的方法,我想到有两个办法。如果对数据的实时性要求不高,可以利用msmq或者数据库来中转,不然就用socket,下面是调试成功的部分代码:
win form服务端:
string strHostName = Dns.GetHostName();
IPHostEntry ipHostEntry = Dns.GetHostEntry(strHostName);
IPEndPoint localEndPoint = new IPEndPoint(ipHostEntry.AddressList[0], 12345);//假设监听12345端口
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(1);
string message = "";
while (message != "finish")
{
receiver = listener.Accept();
byte[] buffer = new byte[2000];
int length = receiver.Receive(buffer);//这里假设从web form来的消息很短,一次就可以接收完,如果比较长,可以把buffer的长度设的大一些,或者用循环的方法
message = Encoding.ASCII.GetString(buffer, 0, length);
}
web form:
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);
Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
receiver.Connect(remoteEndPoint);
if (receiver.Connected)
{
byte[] buffer;
buffer = Encoding.ASCII.GetBytes("abcde");//要发送的内容
receiver.Send(buffer);
}
这样通讯的方法,我想到有两个办法。如果对数据的实时性要求不高,可以利用msmq或者数据库来中转,不然就用socket,下面是调试成功的部分代码:
win form服务端:
string strHostName = Dns.GetHostName();
IPHostEntry ipHostEntry = Dns.GetHostEntry(strHostName);
IPEndPoint localEndPoint = new IPEndPoint(ipHostEntry.AddressList[0], 12345);//假设监听12345端口
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(1);
string message = "";
while (message != "finish")
{
receiver = listener.Accept();
byte[] buffer = new byte[2000];
int length = receiver.Receive(buffer);//这里假设从web form来的消息很短,一次就可以接收完,如果比较长,可以把buffer的长度设的大一些,或者用循环的方法
message = Encoding.ASCII.GetString(buffer, 0, length);
}
web form:
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);
Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
receiver.Connect(remoteEndPoint);
if (receiver.Connected)
{
byte[] buffer;
buffer = Encoding.ASCII.GetBytes("abcde");//要发送的内容
receiver.Send(buffer);
}
#4
奇怪为什么winform要做服务器端。
建议将winform的程序分好层,将业务逻辑分离出来,形成类库。
用web service做服务器端,引用业务逻辑类库。
建议将winform的程序分好层,将业务逻辑分离出来,形成类库。
用web service做服务器端,引用业务逻辑类库。
#5
同意
#6
webform socket?
客户端socket ,flash?
客户端socket ,flash?
#7
不用winform做服务器端的话 microsoft speech sdk 在asp.net中我所要的事件没有被触发出来啊
,例如 SpVoice vox = new SpVoiceClass();
然后委托:
我想要这个结果 我只能这样选择用winform做服务器啦。
我也想过用web service 但是怎么用,获得触发结果,更难啊!
各路朋友 请教啦。
,例如 SpVoice vox = new SpVoiceClass();
然后委托:
vox.Viseme += new _ISpeechVoiceEvents_VisemeEventHandler(vox_Viseme); //这两个是无法触发出来的啊,微软的一个专家说了 microsoft speech sdk 是基于COM 的程序的 asp.net没有消息循环机制,不会触发出来。
vox.Word += new _ISpeechVoiceEvents_WordEventHandler(vox_Word);
我想要这个结果 我只能这样选择用winform做服务器啦。
我也想过用web service 但是怎么用,获得触发结果,更难啊!
各路朋友 请教啦。
#8
并且把触发结果都返回客户端!这样很慢,于是我觉得很慢。
并且 客户端已关闭 就会影响到服务器 端了,
并且 客户端已关闭 就会影响到服务器 端了,
#9
请问有什么好的方法啊?谢谢先了
#10
楼主的意思是这样吧:
用winform做服务器端,webform 做客户端 然后客户端发送数据到服务器端
让服务器端处理,再返回客户端。
过程确实不简单 , 如果涉及客户端多人的时候 还要考虑服务器负载,处理问题
,
我也不懂多少
帮顶!!!
用winform做服务器端,webform 做客户端 然后客户端发送数据到服务器端
让服务器端处理,再返回客户端。
过程确实不简单 , 如果涉及客户端多人的时候 还要考虑服务器负载,处理问题
,
我也不懂多少
帮顶!!!
#11
去我的共享资源里有完整的 异步socket代码客服端和服务端 自己去下
#12
webform做客户端那你的web页面存在哪个服务器上的也是同winform放一起嘛??
webform有没有监听端口的功能不清楚。
webform有没有监听端口的功能不清楚。
#13
这是个弥天大误解!
asp.net程序永远工作在web服务器端,它只是在客户端请求时返回html字符串而已。
#14
或者你说说如何用asp.net程序post数据给winform程序吧
#15
还有“文本文件”而不是直接winform直接返回数据给请求它的asp.net程序。
唉,劝你找一个专业程序员来做这类程序。自己做多累啊。
唉,劝你找一个专业程序员来做这类程序。自己做多累啊。
#16
我的意思是将客户端webform的数据 post 到 服务器端winform
两个在同一个服务器上。
#17
对啊 楼上的说得是我想要的啊
#18
同意
#19
webform是客户端啊
winform服务端啊
大哥们!!!
请问 还有哪里不清楚哦!!!!
winform服务端啊
大哥们!!!
请问 还有哪里不清楚哦!!!!
#20
winform?难道想回到CGI的时代?不明白,sp说的对,我不知道以前在CGI时代的静态网页怎么用程序处理请求,但既然是程序,winform应该也行,但就是不知道asp.net行不行了。。。
#21
唉,直接使用数据库吧,WebForm把数据Post到数据库里,WinForm定时检查数据库,操作,完成
不用客HTTP、SOCKET
不用客HTTP、SOCKET
#22
说到底就是web和winform通讯吧,用socket、remoting、wcf都可以,有文件、数据库做介质也可以。
但是你要用post,那你的winform首先需要是一个web服务器。
但是你要用post,那你的winform首先需要是一个web服务器。
#23
不懂你意思