socket连接服务器时卡顿问题~~

问题描述

我想大家在刚学习用TCP客户端连接服务器时,在连接的过程中,客户端一直回处于无响应状态,直到连接成功或失败为止!!既然大家在代码界混了这么久,想必一定知道该如何解决这个问题了吧,如何实现想QQ一样,连接的时候也可以拖动窗口,还可以有个小动画或文字来表示正在连接中?作为一名刚踏入C#界的小辈来说,不知如何下手。。。现在我想到的办法就只有把连接放到一个线程里,不知还有其他更好的办法没?就大神赐教~谢谢

解决方案

解决方案二:
引用楼主sinat_29437461的回复:

现在我想到的办法就只有把连接放到一个线程里,不知还有其他更好的办法没?

你想到的办法经实践有什么问题?或者你是懒得用测试实践来说明问题?
解决方案三:
引用楼主sinat_29437461的回复:

我想大家在刚学习用TCP客户端连接服务器时,在连接的过程中,客户端一直回处于无响应状态,直到连接成功或失败为止!!既然大家在代码界混了这么久,想必一定知道该如何解决这个问题了吧,如何实现想QQ一样,连接的时候也可以拖动窗口,还可以有个小动画或文字来表示正在连接中?作为一名刚踏入C#界的小辈来说,不知如何下手。。。现在我想到的办法就只有把连接放到一个线程里,不知还有其他更好的办法没?就大神赐教~谢谢

耗时或者会发生阻塞的问题,就是另起线程来解决线程中的工作进度显示到UI,需要使用委托;如果线程不熟悉,可以用backgroundworker控件,类似的效果
解决方案四:
直到连接成功或失败为止!!-》代码经过认真测试?或者逻辑上有问题。还可以有个小动画或文字来表示正在连接中-》使用WPF动画技术。
解决方案五:
涉及到线程阻塞,肯定异步啊,要么另起线程,要么在当前线程异步调用,如果是主线程的话,还是建议另起线程;话说你都想到了,为什么不去试试先呢;
解决方案六:
引用1楼sp1234的回复:

Quote: 引用楼主sinat_29437461的回复:
现在我想到的办法就只有把连接放到一个线程里,不知还有其他更好的办法没?

你想到的办法经实践有什么问题?或者你是懒得用测试实践来说明问题?

不是,我的确试过了,可以。。。我就是想知道还有没有其他方法之类的。。。这不是想~或许有更好的方法不是~
解决方案七:
引用2楼xian_wwq的回复:

Quote: 引用楼主sinat_29437461的回复:
我想大家在刚学习用TCP客户端连接服务器时,在连接的过程中,客户端一直回处于无响应状态,直到连接成功或失败为止!!既然大家在代码界混了这么久,想必一定知道该如何解决这个问题了吧,如何实现想QQ一样,连接的时候也可以拖动窗口,还可以有个小动画或文字来表示正在连接中?作为一名刚踏入C#界的小辈来说,不知如何下手。。。现在我想到的办法就只有把连接放到一个线程里,不知还有其他更好的办法没?就大神赐教~谢谢

耗时或者会发生阻塞的问题,就是另起线程来解决线程中的工作进度显示到UI,需要使用委托;如果线程不熟悉,可以用backgroundworker控件,类似的效果

恩~跟我的想法是一样~我就是想知道还有没有其他或许更好的方法而已~
解决方案八:
引用5楼sinat_29437461的回复:

Quote: 引用1楼sp1234的回复:
Quote: 引用楼主sinat_29437461的回复:
现在我想到的办法就只有把连接放到一个线程里,不知还有其他更好的办法没?

你想到的办法经实践有什么问题?或者你是懒得用测试实践来说明问题?

不是,我的确试过了,可以。。。我就是想知道还有没有其他方法之类的。。。这不是想~或许有更好的方法不是~

你应该恶补计算机基础,什么是进程,什么是线程UI是主线程负责显示,那么你用代码阻塞住了主线程,UI当然是不会刷新,也不接受用户操作,也就是未响应了
解决方案九:
这就好比你去肯德基点餐如果给你点餐的人自己去后面忙活了,那么你之后对着空气说话,谁也不会搭理你只有另外派一个人去后面忙活,前面的人才能继续给你提供别的服务理论上就是这样,你还期待有什么别的好办法?
解决方案十:
如果你认为线程不是最好的办法那么另一个办法就只能是多进程了这就好比你看这家肯德基满了,就去旁边一家店,互相不影响

时间: 2024-09-13 14:12:05

socket连接服务器时卡顿问题~~的相关文章

时时连接外服务器时卡顿

问题描述 时时连接外服务器时卡顿 背景是一个大型的购物商城,总共十一台收银设备.所有的的数据都存储在云端服务器上,每一台收银机在销售的时候都从服务区有一个下载上传的过程.服务器是20兆的电信带宽,本地运营商给的是100兆移动带宽.收银设备与本地主机通过三个千兆路由连接,数据线路收银机到本地主机到云端服务器,反之亦然.按常理来说网络带宽完全够用,可是前台收银总是会在数据处理时发生卡顿.求大神讲解.

通信-android 客户端socket连接服务器,socket何时close

问题描述 android 客户端socket连接服务器,socket何时close 假设socket连接好了,现在客户端向服务器发送完了数据,这个时候需要关闭socket吗?如果关闭后,某个时候又需要发送其他数据,再建立连接? 还是说建立通信协议,一次socket连接后一直保持通信状态,根据通信协议对不同的数据进行不同的处理,然后等客户端程序退出时再关闭socket. 解决方案 Android客户端通过Socket连接服务器Android客户端与java服务器端的Socket连接Socket服务

node js-node.js的udp,当有多个client连接服务器时,该如何处理

问题描述 node.js的udp,当有多个client连接服务器时,该如何处理 sever.on('message', function (message, remote) {} 这个事件可以处理多个client的连接要求吗?不一定要求同时处理的,只要能响应多个client就可以.

服务器-笔记本没办法接收到android客户端的socket连接

问题描述 笔记本没办法接收到android客户端的socket连接 服务器是java写的,在笔记本上面运行.用java的客户端倒是可以连接,但是android写的就不行了.双方程序都是没问题的,台式机测试过. 试过用wifi连接,用网线连接都不行.还有一个问题就是在网上查的ip跟网络连接上面的ip完全不一样 解决方案 啥叫"在网上查的ip跟网络连接上面的ip完全不一样"?android的socket就是java里面滴.据你描述,问题可能出在ip上吧,另外端口也注意. 解决方案二: 你的

连接服务器-【求助】网络编程的问题

问题描述 [求助]网络编程的问题 在连接服务器和客户端时,服务器正常启动,当客户端想要连接服务器时就出现了这个问题,我用一个窗口的输出找到了是在accept那里出了问题,可是感觉都没错啊,而且好像报错的内容accept没用到吧 解决方案 报错好像是你试图访问cstring的substr之类的函数,下标越界. 解决方案二: 检查accept函数的参数的值. 因为你的参数的值有问题,导致accept执行过程中报错 解决方案三: 我也觉得是accept参数的问题,检查下参数类型吧 解决方案四: add

连接不上服务器-android项目连接服务器连不上。

问题描述 android项目连接服务器连不上. 我的项目连接服务器时,没有报错但就是不能将数据传过去.权限也加了,路径在浏览器上也ok.就是连不上啊.求大神指教. 解决方案 一步步用Log打印看看,到底哪里不对 解决方案二: 你ping一下服务器,看看能访问吗 解决方案三: 你先用浏览器,调试 是否可以发送数据,排除服务器不能接收问题,其次在调试客户端.调试客户端,先做连接测试,其次在发数据,实在不行, 简化排除法,服务器端写最简单接收返回程序,不要加权限等外在因素.如何可以访问,证明是权限之类

Android客户端利用Socket连接服务端思路及实例

Android客户端利用Socket连接服务器的大概思路如下: 客户端首次连接服务器: socket = new Socket();       SocketAddress address = new InetSocketAddress(svrHost, svrPort);       socket.connect(address, TIME_OUT);       socket.setSoTimeout(TIME_OUT);       in = new BufferedReader(new 

C# Socket代理 连接一多就反应卡顿 大神帮忙分析一下代码

问题描述 NetworkStreamclientStream=newNetworkStream(Client,FileAccess.ReadWrite,true);NetworkStreamserverStream=newNetworkStream(Server,FileAccess.ReadWrite,true);if(packetText.IndexOf("CONNECT")!=0){serverStream.BeginWrite(Encoding.Default.GetBytes

sqldeveloper连接oracle时出现Socket read time out

问题描述 sqldeveloper连接oracle时出现Socket read time out sqldeveloper连接oracle时出现Socket read time out这个错误是什么原因?求大侠帮忙,谢谢!!(见下截图) 解决方案 我只是来坐沙发,加油! 解决方案二: 1 超时时间的设置是不是太短了 2 服务器的 IP 设置等是否正确? 解决方案三: 连接超时.检查网络,账号信息. 解决方案四: 1.如果不是连接本机,请使用IP地址 2.用tnsping一个oracle服务器,看