您的位置:首页 > 其它

socket通信

2015-09-10 16:51 344 查看
博主最近离职,在面试的时候,90%的面试官会问到你做过scoket吗?做过哪一些功能等等,有的问得很深,由于我之前的职业是老师(助教)这个职位,所以只对socket只是表面上的去理解,只会做一个聊天功能的项目,别的没有多接触过,但这远远达不到面试官的要求,所以在今后的工作中我会更加注重socket项目,让自己的能力提升起来。
现在我就简单的介绍一下吧!

网络编程:
(1)TCP/IP协议:可靠、面向对象连接的协议;(三次握手)
对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

(2)UDP/IP协议:不可靠、无连接的协议;

(3)Socket与ServerSocket:
1)Socket:客户端;
常用的构造方法:
new Socket(本地IP地址,端口号);本地IP地址:localhost;127.0.0.1;
常用的方法:
getInputStream();getOutputStream();

2)ServerSocket:服务端;
常用的构造方法:
new ServerSocket(端口号);
常用的方法:
accept();//在与客户端连接前,一直被阻塞;直到连接匹配成功,才解除;
3)通信原理:





备注:记得通信原理,永远是一边读一边写(边,指是客户端或服务端);在数据传递过程当中只能用字节流,不能用字符流,除(PrintWriter流)外;

Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。在java中,有专门的socket类来处理用户的请求和响应。利用SOCKET类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在JAVA中如何利用socket进行网络编程。在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。
个人理解:Socket其实是通讯的两端,不管是客户端或者服务端,二者都需要各持一端,所以二者都需要有socket类的对象,客户端直接用创建新对象的方式直接new出socket对象来,并且把想要链接的ip跟端口号以形参方式通过构造函数传入,服务端与客户端不同,服务端需要实时保持侦听状态,一旦有客户端连入该端口,就得响应连接,所以他的Socke端口就与客户端的Socket不同,他是由服务器类SeverSocket的对象通过调用accept的方法才能实现实时的保持侦听状态,并且要创建一个端口,由服务器类的对象通过构造函数传入。因此,服务器类:ServerSocket ss = new ServerSocket(端口号); Socket s = ss.accept();
而客户端类:Socket s = new Socket("ip",要连入的端口号);

对于聊天程序,看下一篇博文吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket的理解