tcpclient

Reading from TcpStream results in empty buffer

一笑奈何 提交于 2020-03-01 19:42:20
问题 I want to read data from a TCP stream but it results in an empty Vec : extern crate net2; use net2::TcpBuilder; use std::io::Read; use std::io::Write; use std::io::BufReader; let tcp = TcpBuilder::new_v4().unwrap(); let mut stream = tcp.connect("127.0.0.1:3306").unwrap(); let mut buf = Vec::with_capacity(1024); stream.read(&mut buf); println!("{:?}", buf); // prints [] When I use stream.read_to_end the buffer is filled but this takes way too long. In Python I can do something like import

Transferring files over TCP with CopyTo()

寵の児 提交于 2020-02-25 04:48:12
问题 I have a question regarding the CopyTo() method of the Stream class: https://docs.microsoft.com/en-us/dotnet/api/system.io.stream.copyto This approach works for small file circa 15kb as I tried it, but anything higher (I tested with 2mbs, 4 mbs and so on) and it just hangs on the CopyTo() method. Can't really figure out why. Code sample: Server's handle client : public void HandleClient(object c) { string path = "some path"; using (TcpClient client = (TcpClient)c) { using (NetworkStream

Transferring files over TCP with CopyTo()

时光总嘲笑我的痴心妄想 提交于 2020-02-25 04:46:15
问题 I have a question regarding the CopyTo() method of the Stream class: https://docs.microsoft.com/en-us/dotnet/api/system.io.stream.copyto This approach works for small file circa 15kb as I tried it, but anything higher (I tested with 2mbs, 4 mbs and so on) and it just hangs on the CopyTo() method. Can't really figure out why. Code sample: Server's handle client : public void HandleClient(object c) { string path = "some path"; using (TcpClient client = (TcpClient)c) { using (NetworkStream

检查服务器支持的Security protocol powershell

痴心易碎 提交于 2020-02-22 19:39:50
最近开发遇见一个《 his could be due to the fact that the server certificate is not configured property with HTTP.SYS in the HTTPS case》问题。 由于服务半年没有部署修改过,突然提示错误,查阅相关文档了解到,服务器关闭了TLS10安全协议。一下是检查服务器TLS支持协议版本号的Powershell脚本 脚本来源 : function Test-ServerSSLSupport { [CmdletBinding()] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [ValidateNotNullOrEmpty()] [string]$HostName, [UInt16]$Port = 443 ) process { $RetValue = New-Object psobject -Property @{ Host = $HostName Port = $Port SSLv2 = $false SSLv3 = $false TLSv1_0 = $false TLSv1_1 = $false TLSv1_2 = $false KeyExhange = $null HashAlgorithm =

C# 网络编程 - TCP编程

被刻印的时光 ゝ 提交于 2020-02-22 03:30:05
一、TCP的工作过程 首先TCP是一种面向连接的,可靠的,基于字节流的传输层通信协议。TCP的工作过程可以分为三个阶段:一、连接的建立; 二、传输数据; 三、断开连接,下面就对这三个过程分别介绍下: 1.1 连接的建立 TCP的连接建立就像打电话一样, 我们打电话时,拨一个号码的号码并不是立即就可以接通的,期间会有一个“嘟 嘟”的呼叫过程, 这就好比是TCP协议的连接的建立阶段。当我们用TCP编写的程序,必须先建立TCP连接。TCP协议的连接建立通过三次握手来完成的,下面是在网上找的一张TCP三次握手的图片: 下面就对这三次握手简单的介绍: 第一次握手:建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_Send状态,等待服务器确认 第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_Recv状态 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入Established(建立)状态,完成三次握手。 简单理解三次握手就是发送一个检验包给对方然后互相确认,双方都接到确认的一个信号时,这时候双方就建立了连接(就像我们打电话时,如果没人说话时就会说下 “喂”,说这句“喂”

转:【专题五】TCP编程

别来无恙 提交于 2020-02-22 03:29:29
前言 前面专题的例子都是基于应用层上的HTTP协议的介绍, 现在本专题来介绍下传输层协议——TCP协议,主要介绍下TCP协议的工作过程和基于TCP协议的一个简单的通信程序,下面就开始本专题的正文了。 一、TCP的工作过程 首先TCP是一种面向连接的,可靠的,基于字节流的传输层通信协议。TCP的工作过程可以分为三个阶段:一、连接的建立; 二、传输数据; 三、断开连接,下面就对这三个过程分别介绍下: 1.1 连接的建立 TCP的连接建立就像打电话一样, 我们打电话时,拨一个号码的号码并不是立即就可以接通的,期间会有一个“嘟 嘟”的呼叫过程, 这就好比是TCP协议的连接的建立阶段。当我们用TCP编写的程序,必须先建立TCP连接。TCP协议的连接建立通过三次握手来完成的,下面是在网上找的一张TCP三次握手的图片: 下面就对这三次握手简单的介绍: 第一次握手:建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_Send状态,等待服务器确认 第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_Recv状态 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入Established(建立)状态,完成三次握手

专题五:TCP编程

 ̄綄美尐妖づ 提交于 2020-02-22 03:29:12
前言   前面专题的例子都是基于应用层上的HTTP协议的介绍, 现在本专题来介绍下传输层协议——TCP协议,主要介绍下TCP协议的工作过程和基于TCP协议的一个简单的通信程序,下面就开始本专题的正文了。   一、TCP的工作过程   首先TCP是一种面向连接的,可靠的,基于字节流的传输层通信协议。TCP的工作过程可以分为三个阶段:一、连接的建立; 二、传输数据; 三、断开连接,下面就对这三个过程分别介绍下: 1.1 连接的建立   TCP的连接建立就像打电话一样, 我们打电话时,拨一个号码的号码并不是立即就可以接通的,期间会有一个“嘟 嘟”的呼叫过程, 这就好比是TCP协议的连接的建立阶段。当我们用TCP编写的程序,必须先建立TCP连接。TCP协议的连接建立通过三次握手来完成的,下面是在网上找的一张TCP三次握手的图片:              下面就对这三次握手简单的介绍: 第一次握手:建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_Send状态,等待服务器确认 第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_Recv状态 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕

【.NET】网络编程总结

大兔子大兔子 提交于 2020-02-21 16:57:04
1、首先说下计算机网络中的TCP/IP参考模型   TCP/IP把网络分为5层,每一层负责完成不同的功能     1)应用层:传输报文,提供各种网络应用,有FTP、SMTP、HTTP等协议     2)运输层:传输报文段,为应用程序的客户机和服务器之间提供传输应用层报文服务,协议有TCP,UDP     3)网络层:传输数据包,协议有IP协议,选路协议     4)链路层:传输数据帧,以太网就属于这个层     5)物理层:在节点之间传输比特流   应用程序是通过套接字访问网络下层的服务的,套接字是网络运输层和应用层的一个编程接口,在程序中通过套接字来进行TCP和UDP传输,运输层以下的层对程序员透明 TCP和UDP是最基本的传输协议,应用层的所有协议都是基于这两个协议进行封装扩展的   TCP:可靠的,面向连接的连接数据传输服务,传输的是字节流,能保证数据的有序性     1)建立连接(三次握手)  2)传输数据  3)断开连接(四次握手)   UDP:不可靠,面向数据报的无连接的数据传输服务,传输的是是数据包,不保证数据的有序性     广播:可以向同一个子网内的所有主机发送广播数据     组播:可以向所有加入组网的主机发送组播数据 2、编程(本节由于篇幅太长,这里只说TCP)   .NET 框架提供了下面几个类对实现网络通信:     Socket

C#网络编程(基本概念和操作) - Part.1

删除回忆录丶 提交于 2020-02-06 07:14:42
C#网络编程(基本概念和操作) - Part.1 引言 C#网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识,希望能对刚开始学习的朋友提供一些帮助。如果想要更加深入的内容,可以参考相关书籍。 本文是该系列第一篇,主要讲述了基于套接字(Socket)进行网络编程的基本概念,其中包括TCP协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、连接远程服务端;第二篇讲述了一个简单的范例:从客户端传输字符串到服务端,服务端接收并打印字符串,将字符串改为大写,然后再将字符串回发到客户端,客户端最后打印传回的字符串;第三篇是第二篇的一个强化,讲述了第二篇中没有解决的一个问题,并使用了异步传输的方式来完成和第二篇同样的功能;第四篇则演示了如何在客户端与服务端之间收发文件;第五篇实现了一个能够在线聊天并进行文件传输的聊天程序,实际上是对前面知识的一个综合应用。 与本文相关的还有一篇文章是: C#编写简单的聊天程序 ,但这个聊天程序不及本系列中的聊天程序功能强大,实现方式也不相同。 网络编程基本概念 1.面向连接的传输协议:TCP 对于TCP协议我不想说太多东西,这属于大学课程,又涉及计算机科学,而我不是“学院派”,对于这部分内容,我觉得作为开发人员,只需要掌握与程序相关的概念就可以了,不需要做太艰深的研究。

How to find cause and of the SocketException with message that an established connection was aborted by the software in your host machine?

自作多情 提交于 2020-01-24 06:27:11
问题 I know the similar question may have been asked many times, but I want to represent the behavior I'm seeing and find if somebody can help predict the cause of this. I am writing a windows service which connects to other windows service over TCP. There are 100 user entities of this, and 5 connections per each. These users perform their tasks using their individual connections. The application goes on withough seeing this problem for 1 or 2 days. Or sometimes show the problem right after