服务端代码: using System; using ; using ponentModel; using ; using ; using ; using ; using ; using .Sockets; using ; //IP,IPAddress, IPEndPoint ,端口等; using ; using ; namespace _11111 {public partial class frm_server :Form {public frm_server() {ponent(); =false; } Thread threadWatch =null; //负责监听客户端连接请求的线程; Socket socketWatch =null; Dictionary<string, Socket> dict =new Dictionary<string, Socket>(); Dictionary<string, Thread> dictThread =new Dictionary<string, Thread>(); private void btnBeginListen_Click(object sender, EventArgs e) {//创建负责监听的套接字,注意其中的参数; socketWatch =new Socket(, , ); //获得文本框中的 IP对象; IPAddress address =(()); //创建包含 ip和端口号的网络节点对象; IPEndPoint endPoint =new IPEndPoint(address, (())); try {//将负责监听的套接字绑定到唯一的 ip和端口上; (endPoint); }catch (SocketException se) {(" 异常: "+); return; }//设置监听队列的长度; (10); //创建负责监听的线程; threadWatch =new Thread(WatchConnecting); =true; (); ShowMsg(" 服务器启动监听成功! "); //} }/// <summary> /// 监听客户端请求的方法; /// </summary> void WatchConnecting() {while (true) //持续不断的监听客户端的连接请求; { //开始监听客户端连接请求, Accept 方法会阻断当前的线程; Socket sokConnection =(); //一旦监听到一个客户端的请求,就返回一个与该客户端通信的套接字; //想列表控件中添加客户端的 IP信息; (()); //将与客户端连接的套接字对象添加到集合中; ((), sokConnection); ShowMsg(" 客户端连接成功! "); Thread thr =new Thread(RecMsg); =true; (sokConnection); ((), thr); //将新建的线程添加到线程的集合中去。}}void RecMsg(object sokConnectionparn) {Socket sokClient =sokConnectionparn asSocket; while (true) { //定义一个 2M的缓存区; byte[] arrMsgRec =new byte[1024 *1024
tcpIP客户端服务器文字文件传输 来自淘豆网m.daumloan.com转载请标明出处.