马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、TCP通讯(服务端)
二、控件展示
三、TCP 服务端 客户端 分辨
四、控件剖析
一般IP地点本机都是 : 127.0.0.1
端口号会有表现: 60000
服务端: 启动监听 停止监听 都会有发送信息
服务端对接的是客户端 可以理解为是理解
控件:ListBox 是为了更好展示运行的过程
五、链接控件实验
1.实例化三个Socket
- public Socket ServerSocket { get; set; }
- public Socket SocketAccept { get; set; }
- public Socket socket;
复制代码 ServerSocket 是用来套接字 用来监听的套子节
SocketAccept 是用来接收绑定客户端的套接字
2.过程运行结果,展示
- private void Showmsg(string s)
- {
- listBox1.BeginInvoke(new Action<string>(str =>
- {
- listBox1.Items.Add(str);
- }), s);
- }
复制代码 注意: 由于在线程中,分线程不能操作ui界面,所以需要用Invoke来调用
或者: CheckForIllegalCrossThreadCalls=false; 对非法线程调用不举行检测
3.线程,开始监听事故
4.按钮一:启动监听实验
- private void btnstart_Click(object sender, EventArgs e)
- {
- btnstart.Enabled=false;
- btncancel.Enabled=true;
- ServerSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
- //绑定ip地址
- IPAddress iPAddress=IPAddress.Parse(textBox1.Text);
- //绑定端口号
- int port=int.Parse(textBox2.Text);
- //建立连接
- IPEndPoint iPEndPoint=new IPEndPoint(iPAddress, port);
- try
- {
- //绑定连接点
- ServerSocket.Bind(iPEndPoint);
- //开始监听
- ServerSocket.Listen(5);
- t1 = new Thread(ListenT1);
- t1.IsBackground=true;
- t1.Start(ServerSocket);
- }
- catch (Exception ex)
- {
- throw;
- }
- }
- private void ListenT1(object o)
- {
- SocketAccept = o as Socket;
- try
- {
- while(true)
- {
- //线程阻塞,直到有客户连接,再去执行后续代码
- socket = SocketAccept.Accept();
- Showmasg($"{DateTime.Now.ToString("HH-mm-ss")}{socket.RemoteEndPoint}连接成功");
- t2 = new Thread(Received);
- t2.IsBackground=true;
- t2.Start(socket);
- }
- }catch (Exception ex)
- {
- throw;
- }
- }
- private void Received(object o)
- {
- socket=o as Socket;
- //传递的数据大小为2M
- byte[]buffer=new byte[1024*1024*2];
- int r=socket.Receive(buffer);
- if (r==0)
- {
- return;
- }
- string s=Encoding.UTF8.GetString(buffer);
- Showmasg(s);
- }
复制代码 代码表明:
实例化一个Socket
参数1:设置协议的类型 参数2:套接字的双向数据流 参数3:利用tcp通信协议
5.停止监听按钮
- private void btncancel_Click(object sender, EventArgs e)
- {
- btncancel.Enabled = false;
- if (socket != null)
- {
- socket.Shutdown(SocketShutdown.Both);
- socket.Close();
- }
- ServerSocket.Close();
- t1.Abort();
- btnstart.Enabled = true;
- }
复制代码 6.发送信息结果展示
- private void btnsend_Click(object sender, EventArgs e)
- {
- string s=textBox3.Text;
- byte[]buffer=Encoding.UTF8.GetBytes(s);
- try
- {
- int r = socket.Send(buffer);
- Showmasg("发送成功");
- textBox3.Clear();
- }
- catch (Exception ex)
- {
- throw;
- }
- }
复制代码 六、清目了然的CV吧
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |