问题是这样的:
      asp.net 的 webform是客户端,我要在客户端的数据post到服务器端winform.
winform会做出相关的处理,服务器是这样处理的:把事件触发的一些结果写入文本文件
(有想法是可以不用写入文件而直接返回客户端,但我做不到!会的朋友请告诉我,谢谢),然后把文本文件的内容
返回到客户端
。客户端接收到数据并打印在页上。这样 我用了socket了 但是一直没有成功啊!
各位朋友,请帮帮忙吧,谢谢先了。

解决方案 »

  1.   

    我怎么感觉你写反了
    webform是客户端??
    winform是服务器端?
      

  2.   

    如果倒过来,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);
                }
      

  3.   

    奇怪为什么winform要做服务器端。建议将winform的程序分好层,将业务逻辑分离出来,形成类库。
    用web service做服务器端,引用业务逻辑类库。 
      

  4.   

    webform socket?客户端socket ,flash?
      

  5.   

    不用winform做服务器端的话 microsoft speech sdk 在asp.net中我所要的事件没有被触发出来啊
    ,例如 SpVoice vox = new SpVoiceClass();
    然后委托:vox.Viseme += new _ISpeechVoiceEvents_VisemeEventHandler(vox_Viseme);     //
                vox.Word += new _ISpeechVoiceEvents_WordEventHandler(vox_Word);这两个是无法触发出来的啊,微软的一个专家说了  microsoft speech sdk 是基于COM 的程序的 asp.net没有消息循环机制,不会触发出来。我想要这个结果 我只能这样选择用winform做服务器啦。
    我也想过用web service  但是怎么用,获得触发结果,更难啊!各路朋友 请教啦。
      

  6.   

    去我的共享资源里有完整的 异步socket代码客服端和服务端  自己去下
      

  7.   

    webform做客户端那你的web页面存在哪个服务器上的也是同winform放一起嘛??webform有没有监听端口的功能不清楚。
      

  8.   


    这是个弥天大误解!asp.net程序永远工作在web服务器端,它只是在客户端请求时返回html字符串而已。
      

  9.   

    或者你说说如何用asp.net程序post数据给winform程序吧
      

  10.   

    还有“文本文件”而不是直接winform直接返回数据给请求它的asp.net程序。唉,劝你找一个专业程序员来做这类程序。自己做多累啊。
      

  11.   

    我的意思是将客户端webform的数据 post 到 服务器端winform两个在同一个服务器上。
      

  12.   

     webform是客户端啊 
    winform服务端啊大哥们!!!请问 还有哪里不清楚哦!!!!
      

  13.   

    winform?难道想回到CGI的时代?不明白,sp说的对,我不知道以前在CGI时代的静态网页怎么用程序处理请求,但既然是程序,winform应该也行,但就是不知道asp.net行不行了
      

  14.   

    唉,直接使用数据库吧,WebForm把数据Post到数据库里,WinForm定时检查数据库,操作,完成
    不用客HTTP、SOCKET
      

  15.   

    说到底就是web和winform通讯吧,用socket、remoting、wcf都可以,有文件、数据库做介质也可以。
    但是你要用post,那你的winform首先需要是一个web服务器。