永发信息网

C# winform tcp连接怎么设置非阻塞模式?

答案:2  悬赏:20  手机版
解决时间 2021-02-07 19:41
  • 提问者网友:了了无期
  • 2021-02-07 01:54
网上VB和java的例子很多,先下所遇到的问题是TCP连接时发生的服务器端阻塞,求问如何设置为非阻塞模式?
最佳答案
  • 五星知识达人网友:蕴藏春秋
  • 2021-02-07 02:47
采用异步发送方式,可以消除阻塞
全部回答
  • 1楼网友:拜訪者
  • 2021-02-07 03:00
把下面所有出现ip:192.168.1.190的地方全部改成你的地址!!! 这个是纯控制台的,另外我这还有窗体的!你要就联系我!! 服务器端: using system; using system.collections.generic; using system.linq; using system.text; using system.net; using system.net.sockets; namespace s1 { class program { static void main(string[] args) { try { // 把ip地址转换为ipaddress的实例 ipaddress ipad = ipaddress.parse("192.168.1.192"); // 初始化监听器, 端口为8001 tcplistener mylist = new tcplistener(ipad, 8001); // 开始监听服务器端口 mylist.start(); // 输出服务器启动信息 console.writeline("在8001端口启动服务..."); console.writeline("本地节点为:" + mylist.localendpoint); console.writeline("等待连接....."); // 等待处理接入连接请求 // 新建立的连接用套接字s表示 socket s = mylist.acceptsocket(); console.writeline("连接来自 " + s.remoteendpoint); // 接收客户端信息 byte[] b = new byte[100]; int k = s.receive(b); console.writeline("已接收..."); for (int i = 0; i < k; i++) { console.write(convert.tochar(b[i])); } // 处理客户端请求,给客户端回应 asciiencoding asen = new asciiencoding(); s.send(asen.getbytes("the string was recieved by the server.")); console.writeline("\n已发送回应信息"); // 善后工作,释放资源 s.close(); mylist.stop(); } catch (exception e) { console.writeline("error..... " + e.stacktrace); } } } } 客户端: using system; using system.collections.generic; using system.linq; using system.text; using system.net; using system.net.sockets; using system.io; namespace c1 { class program { static void main(string[] args) { try { tcpclient myclient=new tcpclient(); console.writeline("连接服务器................"); myclient.connect("192.168.1.192",8001); console.writeline("已连接........"); console.writeline("请输入要传送的字符串"); string str=console.readline(); stream mstream=myclient.getstream(); asciiencoding myasc=new asciiencoding(); byte[] ba=myasc.getbytes(str); console.writeline("传送中.............."); mstream.write(ba,0,ba.length); byte[] bb=new byte[50]; int k=mstream.read(bb,0,50); for (int i=0;i<50 ;i++ ) { console.write(convert.tochar(bb[i])); } myclient.close(); } catch(exception e) { console.writeline("something wrong: "+e.message); } console.readkey(); } } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯