当我运行时候,单击启动监听后,文本框中没有显示“连接成功”,但是我再单击启动监听会弹出“端口号只能使用一次的错误”!
------------------------主要代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ChatRoom
{
public partial class Server : Form
{
public Server()
{
InitializeComponent();
TextBox.CheckForIllegalCrossThreadCalls = false;//关闭对文本框的跨线程操作的检查
}
Thread threadWatch;
Socket socketWatch;//声明服务端负责监听的套接字
private void btnWatch_Click(object sender, EventArgs e)
{
//1、创建服务器段负责监听的套接字 参数(使用的IP寻址协议,流式,TCP传输)
socketWatch = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//2、获取文本框的值 创建包含IP 和 Port的网络结点
IPAddress address = IPAddress.Parse(txtIP.Text.Trim());
IPEndPoint endPoint = new IPEndPoint(address,int.Parse(txtPort.Text.Trim()));
//3、将负责监听的套接字保定到唯一的端口和IP上
socketWatch.Bind(endPoint);
//4\设置监听队列的长度
socketWatch.Listen(10);
//5、使用多线程开始监听客户端 (多线程可以解决accept方法阻断当前线程
threadWatch = new Thread(WatchConnecting);//新建一个线程,传入要之行的方法
threadWatch.IsBackground = true;//设置为后台线程
threadWatch.Start(); //启动线程的之行方法
}
private void WatchConnecting()
{
//开始监听客户端
socketWatch.Accept();
ShowMsg("连接成功!!!");
}
void ShowMsg(string msg)
{
txtMsg.AppendText(msg + "\r\n") ;
}
}
}
|