简说

假如你要在Java中应用TCP/IP根据数据连接到网络服务器,你需要建立一个java.net.Socket目标来连结到网络服务器。假如您应用JavaNIO,还可以在JavaNIO中建立SocketChannel目标。

第一步建立Socket

下列实例编码联接到IP地址为89.53.64.191的网络服务器上的端口号80。网络服务器是网站服务器,端口号80是互联网服务端口号。

Socket socket = new Socket("89.53.64.191", 80);

大家还可以应用网站域名来替代IP地址,如下所示例所显示:

Socket socket = new Socket("wyzhang.com", 80);

第二步Socket传送数据

根据tcp协议传送数据,获得tcp协议的輸出流。实例编码如下所示:

Socket socket = new Socket("jenkov.com", 80);OutputStream out = socket.getOutputStream(); out.write("some data".getBytes());out.flush();out.close(); socket.close();

编码比较简单,可是假如想根据互联网向服务器发送数据信息,别忘记启用flush()方式。电脑操作系统的最底层TCP/IP完成会先将信息放进一个更高的数据信息缓存文件块中,缓存文件块的尺寸与TCP/IP的数据文件尺寸兼容。

第三步Socket获取数据

要从tcp协议获取数据,大家必须获得tcp协议的键入流。编码如下所示:

Socket socket = new Socket("jenkov.com", 80);InputStream in = socket.getInputStream(); int data = in.read();//... read more data... in.close();socket.close();

编码并不繁杂,可是需要特别注意的是,从Socket的键入流中获取数据是没法读取文件的,因此read()方式一直被启用,直至它回到-1,由于针对Socket而言,仅有在网络服务器关掉联接时,Socket的键入流才会回到-1,但事实上网络服务器不容易一直关掉联接。如果我们想根据一个联接推送好几个要求,在这样的情形下关掉联接是愚昧的。

因而,在从Socket的键入流中获取数据时,大家务必了解要导入的字节,这能够根据让网络服务器告知数据信息中早已推送了是多少字节数,或是在数据信息的结尾设定独特的标识符标识来完成。

最终关掉Socket

应用tcp协议后,大家务必关掉tcp协议并断掉与网络服务器的联接。仅根据启用Socket.close()方式关掉Socket,编码如下所示:

Socket socket = new Socket("jenkov.com", 80); socket.close();

总结

实际上电源插座就这样。假如你将键入流和輸出流写好,就不容易有什么问题。想学习编程,能够私聊回应“learn”,接到一线公司的Java面试的问题汇总 阿里东泰山指南 全部题型的学习培训与思索手册 300页pdf文件的Java关键知识点总结!

评论(0条)

刀客源码 游客评论