黑马程序员——网络编程之TCP传输
2014-11-05 11:11
441 查看
TCP协议是网络传输中的又一个重要规则,它需要先建立连接,形成传输数据的通道,在连接中进行大数据量的传输,通过三次握手完成连接,是可靠的协议,但它的传输速度慢。两个端点通过TCP建立连接后的数据传输通道称为Socket流,两个端点(客户端、服务端)对应的对象分别是Socket、ServerSocket。
TCP客户端:
(1)建立tcp的Socket服务,最好明确具体的地址和端口。
(2)如果连接成功,就意味着通道建立了,socket流就已经产生了。
(3)获取socket流中的读取流或输入流,通过getInputStream或getOutputStream,进行数据操作。
(4)关闭资源。
TCP服务端:
(1)创建服务端Socket服务,并监听一个端口。
(2)服务端为了给客户端提供服务,获取客户端的内容,可以通过accept方法获取连接过来的客户端对象。
(3)通过Socket流与客户端进行具体的通讯。
(4)通讯结束,关闭资源。注意:要先关客户端,再关服务端。
输出结果:
服务端收到的数据:127.0.0.1.......connected
服务端,我是客户端
客户端收到的数据:我是服务端,我已经收到了
利用TCP协议来写一个简单的文件上传程序,客户端从自己硬盘上上传一张图片,服务端把这张图片保存在自己的硬盘下。
客户端:
服务端:
值得注意的是,对于阻塞式方法,要提供停止标签!
TCP客户端:
(1)建立tcp的Socket服务,最好明确具体的地址和端口。
(2)如果连接成功,就意味着通道建立了,socket流就已经产生了。
(3)获取socket流中的读取流或输入流,通过getInputStream或getOutputStream,进行数据操作。
(4)关闭资源。
import java.io.*; import java.net.*; public class tcpClient { public static void main(String[] args) throws Exception{ //建立客户端的socket服务,指定地址和端口。这里先不去处理异常。 Socket s=new Socket("127.0.0.1",10004); //获得输出流,写出数据。 OutputStream out=s.getOutputStream(); out.write("服务端,我是客户端".getBytes()); byte[] buf=new byte[1024]; //获得输入流,读取数据。 InputStream in=s.getInputStream(); int len=in.read(buf); System.out.println(new String(buf,0,len)); //关闭资源 s.close(); } }
TCP服务端:
(1)创建服务端Socket服务,并监听一个端口。
(2)服务端为了给客户端提供服务,获取客户端的内容,可以通过accept方法获取连接过来的客户端对象。
(3)通过Socket流与客户端进行具体的通讯。
(4)通讯结束,关闭资源。注意:要先关客户端,再关服务端。
public class tcpServer { public static void main(String[] args) throws Exception { //建立服务端的socket服务。 ServerSocket ss=new ServerSocket(10005); //获取客户端对象。 Socket s=ss.accept(); String ip=s.getInetAddress().getHostAddress(); System.out.println(ip+".......connected"); //读取客户端的数据。 InputStream in=s.getInputStream(); byte[] buf=new byte[1024]; int len=in.read(buf); System.out.println(new String(buf,0,len)); //向客户端发送数据。 OutputStream out=s.getOutputStream(); out.write("我是服务端,我已经收到了".getBytes()); //通讯结束,关闭资源。 s.close(); } }
输出结果:
服务端收到的数据:127.0.0.1.......connected
服务端,我是客户端
客户端收到的数据:我是服务端,我已经收到了
利用TCP协议来写一个简单的文件上传程序,客户端从自己硬盘上上传一张图片,服务端把这张图片保存在自己的硬盘下。
客户端:
import java.io.*; import java.net.*; public class tcpUpdataClient { public static void main(String[] args) throws Exception{ //客户端建立socket服务。 Socket s=new Socket("127.0.0.1",10011); //读取硬盘中的图片 FileInputStream fis=new FileInputStream("c:\\丽江.jpg"); //获取socket流中的输出流 OutputStream os=s.getOutputStream(); byte[] buf=new byte[1024]; int len=0; while((len=fis.read(buf))!=-1){ os.write(buf); } //完成传输,主动端口输出流。应对阻塞时方法。 s.shutdownOutput(); //获取socket流中的读取流,来接收服务端发来的消息。 InputStream is=s.getInputStream(); byte[] b=new byte[1024]; int l=is.read(b); System.out.println(new String(b,0,l)); //关闭资源 fis.close(); s.close(); } }
服务端:
import java.net.*; import java.io.*; public class tcpUpdataServer { public static void main(String[] args) throws Exception { //建立服务端 的socket服务 ServerSocket ss=new ServerSocket(10011); //获取客户端的socket对象 Socket s=ss.accept(); String ip=s.getInetAddress().getHostAddress(); System.out.println(ip+"............is Connected!"); //socket流的读取流, InputStream is=s.getInputStream(); //就流里的数据写到硬盘中。 FileOutputStream fos=new FileOutputStream("d:\\副本.jpg"); byte[] buf=new byte[1024]; int len=0; while((len=is.read(buf))!=-1){ fos.write(buf); } //socket流的输出流,在上传成功后给客户端返回消息。 OutputStream os=s.getOutputStream(); os.write("上传成功!".getBytes()); //关闭资源 s.close(); ss.close(); } }
值得注意的是,对于阻塞式方法,要提供停止标签!
相关文章推荐
- 黑马程序员——8.网络编程(网络模型、网络地址、传输协议(UDP、TCP/IP)、客户端和服务器端、URL)
- 黑马程序员_网络编程1(IP,TCP和UDP,DatagramSocket与DatagramPacket,TCP传输)
- 黑马程序员——网络编程(TCP传输)
- 黑马程序员_网络编程一(IP,TCP和UDP, DatagramSocket与DatagramPacket,TCP传输)
- 黑马程序员—网络编程TCP(传输层完整篇)
- 黑马程序员_学习笔记第22天——网络编程TCP/UDP
- 黑马程序员——TCP传输
- 黑马程序员_TCP传输的一些小经验
- 黑马程序员 TCP传输
- Java基础—网络编程【OSI/RM TCP/IP】【网络通信三要素】【UDP传输 & TCP传输】【DNS域名解析】
- 黑马程序员—网络编程之TCP
- 黑马程序员-网络编程 tcp传输 URL
- Java基础—网络编程【OSI/RM TCP/IP】【网络通信三要素】【UDP传输 & TCP传输】【DNS域名解析】
- day23网络编程UDP,TCP。IP。DatagramSocket。DatagramPacket。聊天程序。TCP传输。文本转换服务器。
- 黑马程序员——java TCP传输演示
- 黑马程序员——网络编程之UDP传输
- JAVA基础再回首(二十八)——网络编程概述、IP地址、端口号、TCP和UDP协议、Socket、UDP传输、多线程UDP聊天
- Java-网络编程(TCP传输)
- 黑马程序员_java网络编程——UDP传输和TCP传输
- 网络编程一(IP,TCP和UDP, DatagramSocket与DatagramPacket,TCP传输)