socket编程(1)


一、socket相关概念

socket作为进程通行机制,表示的是“插座”的意思,通常也被称为“套接字”,用于描述IP地址和端口,用于两个程序通信使用。

举个栗子:
以电话网为例,电话的通话的双方就相当于互相通信的2个程序,电话号码就是IP地址。在进行通话之前需要有一部手机,手机就相当于申请了一个socket,同时还要知道对方的号码,相当于对方有一个固定的socket。向对方号码进行拨号呼叫,相当于发出连接请求。

二、socket的两种类型

1.流式socket

流式socket是一种面向连接的socket,针对于面向连接的TCP服务应用,安全,但是效率低.

1.1TCP三次握手

客户端发送消息;
服务端回复消息
客户端得到消息
三次握手的目的是数据接收到以后进行响应,坏处就是效率太低。

2.数据报式socket

是一种无连接的socket,对应于无连接的UDP服务应用,不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但是效率高

三、注意事项

在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个socket,并且绑定到一个端口上,不同的端口对应于不同的服务(应用程序)
例如:http使用80端口,ftp使用21端口,smtp使用25端口
在连接的时候至少要定义一个要连接远程主机的IP和端口号。
端口号必须在1到65535之间,最好在1024以后,一般使用50000以后的端口号。
要连接的远程主机必须正在监听指定端口,也就是说无法随意连接远程主机。
例如:
IPAddress addr=IPAddress.Parse(“127.0.0.1”);
IPEndPoint endp=new IPEndPoint(addr.10001);
服务端先绑定:serverWelcomeSocket.Bind(endp)
客户端再连接:clientSocket.Connect(endp)

四、连接过程简介

客户端通过IP地址可以连到服务器,再通过端口号可以连到需要的应用程序
客户端和服务端都需要有socket。
服务器首先需要有一个负责监听的socket(),负责监听自己的IP地址和端口号,看看是否有客户端连接。当监听到了以后,服务器需要创建一个socket负责与客户端进行通信。
所以服务器最少只有2个socket,一个负责监听,一个负责通信。而客户端最少可以有一个socket。

1、服务端welcoming socket开始监听端口(负责监听用户端连接信息)
2、客户端client socket连接服务端指定端口(负责接收和发送服务端信息)
3、服务端welcoming socket监听到有客户端连接,创建connection socket(负责和客户端通过)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值