C#网络编程(学习笔记)

  我学习的时候总是喜欢将别人的文章或者程序从头到尾敲一遍,感觉这样比较有耐心,学习的积极性较高,现在我换一种"做笔记"的学习方式,就是把学习时遇到的关键点列出来,然后针对重要的概念进行补充说明。  

  本文是学习笔记,原文请看:http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286300.html

1  TCP是面向连接的。

下面讲解一下TCP的三次握手是如何建立的:

(1)第一次握手,建立连接时,客户端发送syn包(syn=j)到服务器,并进入syn_send状态,等待服务器确认。(SYN是TCP/IP建立连接时使用的握手信号。)

(2)第二次握手,服务器收到syn,必须确认客户端的syn(ack=j+1),然后发送syn+ack(ack=k)包,进入syn_recv状态,等待客户端确认。

(3)第三次握手,客户端收到syn+ack包,发送确认syn(ack=k+1),客户端与服务器端同时进入established状态。

2  TCP是全双工的

下面讲解一下什么是全双工、半双工、单工通信,假设有主机A和B。

(1)单工:只能从主机A向B发送数据。

(2)半双工:A向B发送数据,或者B向A发送数据,但是不能同时进行。

(3)全双工:可以A向B发送数据,同时B向A发送数据。

3 TCP是点对点通信

也就是说我们只能在主机a和主机b之间通信,而不能将a的数据发送给多个接收者。

4 套接字socket

  套接字是用来标识不同的应用程序使用相同TCP或UDP服务的,套接字既可以使用可靠地tcp连接,也可以使用不可靠的udp连接,socket = (主机号+tcp或udp+端口号).

  要通过互联网进行通信,必须建立一对套接字,一个运行在客户端叫ClientSocket,一个运行在服务器端叫ServerSocket,建立套接字的过程分为三步:

(1)服务器监听,服务器什么都不干,就坐在那里等电话。

(2)客户端请求,客户端需要知道服务器的电话号码(服务器端套接字的主机号和端口号),然后向对方拨打电话。

(3)连接确认,服务器收到请求后,建立一个新的线程,把服务器套接字信息发送给客户端,继续监听其他的客户端请求。

5 端口

两个主机a和b,他们有多个应用程序需要通信,那么使用端口标识这些应用程序,就可以知道哪个应用程序在通信了。

6 TcpListener和TcpClient

  这两个类是.net专门针对网络编程提供的,使用这两个类就可以对套接字编程。

  TcpListener是一个监听对象,当有请求的时候,它创建一个TcpClient和对方通信,然后自己继续监听。TcpClient既可以发送数据也可以接收数据。

  摘录:我们考虑这样一种情况:两台主机,主机A和主机B,起初它们谁也不知道谁在哪儿,当它们想要进行对话时,总是需要有一方发起连接,而另一方则需要对本机的某一端口进行侦听。而在侦听方收到连接请求、并建立起连接以后,它们之间进行收发数据时,发起连接的一方并不需要再进行侦听。因为连接是全双工的,它可以使用现有的连接进行收发数据。而我们前面已经做了定义:将发起连接的一方称为客户端,另一段称为服务端,则现在可以得出:总是服务端在使用TcpListener类,因为它需要建立起一个初始的连接

 

 

 

 

 

 

转载于:https://www.cnblogs.com/wang7/archive/2012/05/22/2513890.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值