日期:2014-05-18 浏览次数:21360 次
/**********TcpListener和TcpClient研究********** * 要点一:TcpListener起动后,如果有客户请求,就会建立一个TcpClient连接. * 要点二:通过TcpClient取得NetworkStream对象 * 要点三:通过NetworkStream的Write和Read方法向连接的另一端发或接收数据 * 要点四:传输的数据只能是字符流,需要编码. **********************************************/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Net; using System.Net.Sockets; using System.Threading; namespace WinNet { public partial class ServerFrm : Form { private Thread processor; private TcpListener tcpListener; string clientStr; public ServerFrm() { InitializeComponent(); ServerFrm_Load(); } private void ServerFrm_Load() { //需要在新的线程里监听客户端 try { processor = new Thread(new ThreadStart(StartListening)); processor.Start(); } catch (Exception ex) { } } private void StartListening() { //创建一个监听对象 tcpListener = new TcpListener(IPAddress.Any, 8081); tcpListener.Start(); //循环监听 while (true) { try { //取得客户端的连接 TcpClient tcpClient = tcpListener.AcceptTcpClient(); //取得客户端发过来的字节流 NetworkStream clientStream = tcpClient.GetStream(); //把字节流读入字节数组 byte[] buffer = new byte[51]; clientStream.Read(buffer,0,51); //不可以在此直接设置this.Text,线程问题. clientStr = System.Text.Encoding.ASCII.GetString(buffer); string strURL = "http://65.58.53.45:8088/data.aspx"; HttpWebRequest request; request = (HttpWebRequest)WebRequest.Create(strURL); //Post请求方式 request.Method = "POST"; //内容类型 request.ContentType = "application/x-www-form-urlencoded"; //参数经过URL编码 string paraUrlCoded = "value=22";//测试数据 byte[] payload; //将URL编码后的字符串转化为字节 payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded); //设置请求的ContentLength request.ContentLength = payload.Length; //获得请求流 Stream writer = request.GetRequestStream(); //将请求参数写入流 writer.Write(payload, 0, payload.Length); //关闭请求流 writer.Close(); } catch { } } } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; namespace WinNet { public partial class ClientFrm : Form { private TcpClient tcpClient; public ClientFrm() { InitializeComponent(); tcpClient = new TcpClient(); IPHostEntry host = Dns.GetHostEntry("127.0.0.1"); tcpCl