socket双向连接的建立过程?
java socket建立连接的过程如下:socket
1、 首先调用Socket类的构造函数,以服务器的指定的IP地址或指定的主机名和指定的端口号为参数,创建一个Socket流,在创建Socket流的过程中包含了向服务器请求建立通讯连接的过程实现。
2、 建立了客户端通讯Socket后。就可以使用Socket的方法getInputStream()和getOutputStream()来创建输入/输出流。这样,使用Socket类后,网络输入输出也转化为使用流对象的过程。
3、 使用输入输出流对象的相应方法读写字节流数据,因为流连接着通讯所用的Socket,Socket又是和服务器端建立连接的一个端点,因此数据将通过连接从服务器得到或发向服务器。这时我们就可以对字节流数据按客户端和服务器之间的协议进行处理,完成双方的通讯任务。
4、 待通讯任务完毕后,我们用流对象的close()方法来关闭用于网络通讯的输入输出流,在用Socket对象的close()方法来关闭Socket。
Javasocket长连接究竟是怎么一回事?
现编这个就是个多线程服务器,只要在client不释放连接,服务器端的run里边写while(TRUE)循环,那么就可以长期连接。class ConnectionThread extends Thread{Socket client;int counter;public ConnectionThread(Socket cl,int c){client = cl;counter= c;} @Overridepublic void run(){ try{ String destIP=client.getInetAddress().toString()
; int destport =client.getPort()
; PrintStream outstream=new PrintStream(client.getOutputStream())
; DataInputStream instream=new DataInputStream(client.getInputStream())
; String inline=instream.readLine();
}//trycatch(IOException e){System.out.println(e);}}//run
socket是什么语言?
socket是属于JAVA语言。J***a的socket封了一层,一些底层功能可能不是完全可用,不过应付通常的需求倒是足够了,而Python的socket基本就是原生接口,操作系统支持的基本都支持,甚至可以用raw socket抓底层包。如果只是普通的C/S结构现在很少直接使用socket了,自定协议实现起来很麻烦,新手也处理不好协议设计的问题,比如说消息如何分片、如何匹配、如何解析,如何实现未来协议上的可扩展和多版本兼容等等。一般都是使用通用的协议,最常见的是http,有非常多的好处,一来Web后端极其成熟,二来各种语言的HTTP包使用都很方便,还很容易拓展到B/S结构上使用AJAX实现Web版的应用。对于需要两个方向的推送的可以使用WebSocket。除此以外,JSON-RPC也是非常简单的RPC协议。除了这些通用协议之外,常见的MySQL、Redis等协议也都有相应的软件包可以使用。现在自己调用socket接口,一般都是有特别的需要,或者需要实现一个没有现成的软件包的协议。