C#Socket编程时Accept()阻塞,如何解决? |
您所在的位置:网站首页 › c语言 accept › C#Socket编程时Accept()阻塞,如何解决? |
在学习C#编程中,准备写一个窗口socket程序,服务器端接收数据,但是运行到Accept()后就卡住了,请大神指导一下 编程使用的VS2019 程序代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WinFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); if (textBox1.Text == null && textBox2.Text == null) { listBox1.Items.Clear(); listBox1.Items.Add("请输入IP和端口!"); } else if (textBox1.Text == "192.168.1.3" && textBox2.Text == "52000") { listBox1.Items.Clear(); listBox1.Items.Add("IP和端口已输入!"); listBox1.Items.Add(textBox1.Text); listBox1.Items.Add(textBox2.Text); int port = Convert.ToInt32(textBox2.Text); string host = textBox1.Text; //MessageBox.Show(host); IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port); Socket sSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sSocket.Bind(ipe); sSocket.Listen(3); listBox1.Items.Add("监听已经打开,请等待"); //receive message Socket serverSocket = sSocket.Accept(); listBox1.Items.Add("连接已经建立"); string recStr = ""; byte[] recByte = new byte[4096]; while (true) { int bytes = serverSocket.Receive(recByte, recByte.Length, 0); recStr += Encoding.ASCII.GetString(recByte, 0, bytes); //send message listBox1.Items.Add("服务器端获得信息:{0}" + recStr); string sendStr = "send to client :hello"; byte[] sendByte = Encoding.ASCII.GetBytes(sendStr); serverSocket.Send(sendByte, sendByte.Length, 0); serverSocket.Close(); sSocket.Close(); } } listBox1.Items.Clear(); listBox1.Items.Add("端口输入错误,请重新输入!"); } } }
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |