sockettcp通信,跑一段时间后,延迟很严重

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sockettcp通信,跑一段时间后,延迟很严重相关的知识,希望对你有一定的参考价值。

参考技术A 一、网络自身问题您想要连接的目标网站所在的服务器带宽不足或负载过大。处理办法很简单,请换个时间段再上或者换个目标网站。

二、网线问题导致网速变慢表现为:一种情况是刚开始使用时网速就很慢;另 一种情况则是开始网速正常,但过了一段时间后,网速变慢。后一种情况在台式电脑上表现非常明显,但用笔记本电脑检查时网速却表现为正常。对于这一问题本人 经多年实践发现,因不按正确标准制作的网线引起的网速变慢还同时与网卡的质量有关。一般台式计算机的网卡的性能不如笔记本电脑的,因此,在用交换法排除故 障时,使用笔记本电脑检测网速正常并不能排除网线不按标准制作这一问题的存在。我们现在要求一律按T586A、T586B标准来压制网线,在检测故障时不 能一律用笔记本电脑来代替台式电脑。

三、网络中存在回路导致网速变慢当网络涉及的节点数不是很多、结构不是很复杂时,这种现象一般很少发生。但在一些比较复杂的网络中,经常有多余的备用线路,如无意间连上时 会构成回路。比如网线从网络中心接到计算机一室,再从计算机一室接到计算机二室。同时从网络中心又有一条备用线路直接连到计算机二室,若这几条线同时接 通,则构成回路,数据包会不断发送和校验数据,从而影响整体网速。这种情况查找比较困难。为避免这种情况发生,要求我们在铺设网线时一定养成良好的习惯: 网线打上明显的标签,有备用线路的地方要做好记载。当怀疑有此类故障发生时,一般采用分区分段逐步排除的方法。

四、网络设备硬件故障引起的广播风暴而导致网速变慢作为发现未知设备的主要手段,广播在网络中起着非常重要的作用。然而,随着网络中计算机数量的增多,广播包的数量会急剧增加。当广播包的数 量达到30%时,网络的传输效率将会明显下降。当网卡或网络设备损坏后,会不停地发送广播包,从而导致广播风暴,使网络通信陷于瘫痪。因此,当网络设备硬 件有故障时也会引起网速变慢。当怀疑有此类故障时,首先可采用置换法替换集线器或交换机来排除集线设备故障。如果这些设备没有故障,关掉集线器或交换机的 电源后,DOS下用 “Ping”命令对所涉及计算机逐一测试,找到有故障网卡的计算机,更换新的网卡即可恢复网速正常。网卡、集线器以及交换机是最容易出现故障引起网速变慢 的设备。

五、网络中某个端口形成了瓶颈导致网速变慢实际上,路由器广域网端口和局域网端口、交换机端口、集线器端口和服务器网卡等都可能成为网络瓶颈。当网速变慢时,我们可在网络使用高峰时 段,利用网管软件查看路由器、交换机、服务器端口的数据流量;也可用 Netstat命令统计各个端口的数据流量。据此确认网络数据流通瓶颈的位置,设法增加其带宽。具体方法很多,如更换服务器网卡为100M或1000M、 安装多个网卡、划分多个VLAN、改变路由器配置来增加带宽等,都可以有效地缓解网络瓶颈,可以最大限度地提高数据传输速度。

延迟一段时间后显示 uipickerview

【中文标题】延迟一段时间后显示 uipickerview【英文标题】:show uipickerview after some delay 【发布时间】:2016-06-09 19:44:27 【问题描述】:

我有 uitextfield 并添加了选择器视图作为输入视图。

一切都很完美。我的问题是,一旦我单击 uitextfield 选择器视图,就会出现值。但我从数据库中获取了一些数据,这些数据将根据选择的选择器值更新到另一个文本框。

我从数据库获取数据时有 5-6 秒的时间间隔。但是在调用返回数据之前,可以看到带有预加载值的选取器视图。

我只是想添加一种延迟,直到我从 DB 选择器值中获取数据不可见... 注意:我已经使用隐藏。不能正常工作。

UIPickerView  *vwlistPicker = [[UIPickerView alloc] init];
[vwlistPicker sizeToFit];
vwlistPicker.delegate = self;
vwlistPicker.dataSource = self;
vwlistPicker.showsSelectionIndicator = YES;

UITextField  *txtPayType = [[UITextField alloc] initWithFrame:CGRectMake(0, 65, 250, 30)];
txtPayType.layer.borderWidth = 0.5;
txtPayType.layer.masksToBounds = true;
txtPayType.layer.cornerRadius = 5;
txtPayType.layer.borderColor = [[UIColor blackColor] CGColor];
txtPayType.layer.sublayerTransform = CATransform3DMakeTranslation(5, 0, 0);
txtPayType.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
txtPayType.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
txtPayType.tag = 1;
[txtPayType setDelegate:self];
txtPayType.text = [tempDic valueForKey:@"PayType"];
[txtPayType setFont:[UIFont fontWithName:@"Avenir-Medium" size:15.0]];
[txtPayType setTextColor:[UIColor colorWithRed:19.0/255.0 green:62.0/255.0 blue:137.0/255.0 alpha:1]];
[txtPayType setReturnKeyType:UIReturnKeyDone];
txtPayType.inputView = vwlistPicker;

UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init];
keyboardDoneButtonView.barStyle = UIBarStyleDefault;
keyboardDoneButtonView.translucent = NO;
keyboardDoneButtonView.barTintColor = [UIColor colorWithRed:10.0/255.0 green:23.0/255.0 blue:75.0/255.0 alpha:0];

[keyboardDoneButtonView sizeToFit];

UIBarButtonItem* doneButton = [[[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                style:UIBarButtonItemStylePlain target:self
                                                               action:@selector(itemPickerDoneClicked:)] autorelease];

UIBarButtonItem* cancelButton = [[[UIBarButtonItem alloc] initWithTitle:@"Cancel"
                                                                  style:UIBarButtonItemStylePlain target:self
                                                                 action:@selector(itemPickerCancelClicked:)] autorelease];


[keyboardDoneButtonView setItems:[NSArray arrayWithObjects:doneButton,cancelButton, nil]];

txtPayType.inputAccessoryView = keyboardDoneButtonView;

[self.view addSubview:txtPayType];

//Textfield delegate

    -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    
        if(textField.tag == 1)
        
            [vwlistPicker setHidden:TRUE];
            double delayInSeconds = 5;
            dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
            dispatch_after(popTime, dispatch_get_main_queue(), ^(void)
                [vwlistPicker reloadInputViews];
                textField.inputView = vwlistPicker;
                [vwlistPicker reloadAllComponents];
                [vwlistPicker setHidden:FALSE];
            );
// Call to DB and get Data //
    

我添加了延迟/隐藏(键盘以及pickerview),但仍然出现键盘。并在延迟后出现选择器视图选项。

我不想显示任何东西,一旦我得到数据选择器视图就会出现。

【问题讨论】:

与其延迟为什么不显示一个微调器,然后用正确的值显示选择器? 不,我需要数据,因为...取决于选择器视图选项值,数据在第二个文本字段上进行修改。就像我已经有选择器视图值一样,但是取决于用户选择,我需要将 DB 中的其他值更改为不固定的值。所以碰巧我的选择器视图出现在我调用 db 之前的第一个,我得到数据。 如何获取数据? 我只是想延迟选择器视图的出现.....数据获取是iOS的正常方式......这不会影响......我已经提到了我想延迟的原因...... .. 【参考方案1】:

您可能应该实现UITextField 委托方法textFieldShouldBeginEditing 并为需要网络数据以填充选择器的文本字段返回FALSE。您可以按照 Teja 的建议在窗口顶部显示进度指示器,然后隐藏进度“微调器”并在文本字段上调用 ​​becomeFirstResponder 以使其在下载完成后启用编辑。

【讨论】:

我已经实现了......所有代表......我的代码工作得很好。我不能返回 FALSE。否则选择器视图将永远不会出现。我不想要选择器视图选项的数据。选择器视图数据是固定的,我已经加载。我的问题只出在 textFieldShouldBeginEditing 委托上,我打电话给 DB。同时选择器视图也出现选项。我只是希望它延迟......这样我就可以同时拥有数据和选择器视图......请注意来自数据库的数据是不同的。不是选择器视图数据。我有两个文本字段....一个用于选择器视图,另一个用于数据取决于第一个文本字段。

以上是关于sockettcp通信,跑一段时间后,延迟很严重的主要内容,如果未能解决你的问题,请参考以下文章

java跑一段时间后就报:Caused by: java.sql.SQLException: 无法从套接字读取更多的数据。

Tornado 异步socketTCP通信

延迟一段时间后显示 uipickerview

Ubuntu 16.04.01 解决进程跑一段时间就被killed

专题七.网络编程之套接字SocketTCP和UDP通信实例

在压测过程中,jmeter跑一段时间以后卡死的解决方案