问题描述
前台:<div><asp:TextBoxID="TextBox1"runat="server"Height="206px"TextMode="MultiLine"Width="700px"></asp:TextBox></div><hr/><asp:TextBoxID="TextBox2"runat="server"Height="197px"TextMode="MultiLine"Width="376px"></asp:TextBox><asp:TextBoxID="TextBox3"runat="server"Height="119px"TextMode="MultiLine"></asp:TextBox><asp:ButtonID="Button1"runat="server"Height="52px"OnClick="Button1_Click"Text="SEND"Width="138px"/>
服务器端:protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){SocketServersocket=newSocketServer(34567,"192.168.0.22",TextBox1);Threadthread=newThread(newThreadStart(socket.beginListen));thread.Start();}}publicclassSocketServer{intport;//端口stringhost;//ip地址TextBoxtxt;///<summary>///构造涵数///</summary>///<paramname="ports">端口号</param>publicSocketServer(intports,stringhost,TextBoxtxt){this.port=ports;this.host=host;this.txt=txt;}//开始监听publicvoidbeginListen(){try{IPAddressip=IPAddress.Parse(host);//把ip地址字符串转换为IPAddress类型的实例IPEndPointipe=newIPEndPoint(ip,port);//用指定的端口和ip初始化IPEndPoint类的新实例///创建socket并开始监听Sockets=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字s.Bind(ipe);//绑定EndPoint对像(端口和ip地址)s.Listen(10);//开始监听//txt.Text+="等待客户端连接";//定义循环,以便可以简历多次连接while(true){Sockettemp=s.Accept();//为新建连接创建新的socketwhile(true){stringrecvStr="";byte[]recvBytes=newbyte[1024];intbytes;bytes=temp.Receive(recvBytes,recvBytes.Length,0);//从客户端接受信息recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);Console.WriteLine("servergetmessage:{0}",recvStr);if(recvStr.IndexOf("<EOF>")>-1){break;}}//给client端返回信息stringsendStr="OK";byte[]bs=Encoding.ASCII.GetBytes(sendStr);temp.Send(bs,bs.Length,0);//返回信息给客户端temp.Shutdown(SocketShutdown.Both);temp.Close();}}catch(Exceptionex){stringstr=ex.ToString();txt.Text+="rn"+str+"rn";}}}
最终实现效果:现在我想实现的是把数据999的结果显示在左边的文本框里,如果直接给TextBox2赋值是找不到控件的,应该怎么做呢?
解决方案
解决方案二:
你socket连接的客户端到底是什么