网络编程TCP的一些基本应用操作
2015-04-15 20:44
417 查看
TCP的特点
1、必须建立连接,形成传输数据的通道
2、在连接中进行大数据量传输
3、通过三次握手完成连接,是可靠协议(打电话:A:听得到吗? B:我听得到,你听得到吗?A:我也听得到。 )
4、因为建立连接,效率稍
TCP的应用
数据下载
TCP示例
示例一
TCP客户端
TCP客户端
TCP服务端
示例三
TCP客户端
1、必须建立连接,形成传输数据的通道
2、在连接中进行大数据量传输
3、通过三次握手完成连接,是可靠协议(打电话:A:听得到吗? B:我听得到,你听得到吗?A:我也听得到。 )
4、因为建立连接,效率稍
TCP的应用
数据下载
TCP示例
示例一
TCP客户端
<span style="font-size:18px;">package 网络编程; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; <span style="color:#33cc00;">/** *客户端, *通过查阅Socket对象,发现在该对象建立时就可以去连接指定主机 *因为tcp是面向连接的所以在建立socket服务连接时,就需要有服务端存在,形成通道后, *在该通道传递数据 * *步骤: *1、创建socket服务,并指定要连接的主机和端口 * */</span> public class TCP_SocketDemo01 { public static void main(String[] args) throws Exception { <span style="color:#33cc00;">//创建socket服务,指定主机和端口</span> Socket socket=new Socket("10.144.240.59",10003); <span style="color:#33cc00;">//注:如果此句话执行成功,就在网络中形成了socket流,既有输入流,又有输出流 //为了能发送数据,应该获取socket流中的输出流</span> OutputStream out=socket.getOutputStream(); out.write("你好服务端".getBytes());<span style="color:#33cc00;">//将数据写出到网络流中</span> } }</span>TCP服务端
<span style="font-size:18px;">package 网络编程; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; <span style="color:#33cc00;">/** * 服务端: * 需求:定义端点数据接受并打印在控制台上 * 1、建立服务端的socket服务,ServerSocket * 并建立一个端口 * 2、获取连接过来的客户端对象 * 通过ServerSocket的accept方法所以这个方法是阻塞式的 * 3、客户端如果发过来数据,那么服务端要使用对应的客户端对象, * 并获取到客户端对象的读取流来读取这个数据 ,并打印 * 4、关闭(可选) * */</span> public class TCP_ServerSocketDemo01 { public static void main(String[] args) throws Exception { <span style="color:#33cc00;">//建立服务端socket服务,并监听一个端口</span> ServerSocket ss=new ServerSocket(10003); <span style="color:#33cc00;">//通过ServerSocket的accept()方法获取链接过来的客户端对象</span> Socket s=ss.accept(); String ip=s.getInetAddress().getHostAddress(); System.out.println(ip+"------------------"); <span style="color:#33cc00;">//获取客户端发送过来的数据,那么要使用客户端对象的读取流来读取数据</span> InputStream in =s.getInputStream(); byte[] buf=new byte[1024]; int len=in.read(buf); System.out.println(new String(buf,0,len)); s.close();<span style="color:#33cc00;">//关闭客户端</span> ss.close(); } }</span>示例二
TCP客户端
<span style="font-size:18px;">package 网络编程; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; <span style="color:#33cc00;">/** * 演示tcp传输的客户端和服务断的互访 * 需求:客户端给服务端发送消息,服务端收到后,给客户端反馈消息 * */ /* * 客户端 * 1、建立socket服务,指定要连接的主机和端口 * 2、获取socket流中的输出流,将数据写到该流中去,通过网络发送给服务器 * 3、获取socket流中的输入流,讲服务端反馈的数据获取到并打印, * 4、关闭客服端 * */</span> public class TCP_SocketDemo02 { public static void main(String[] args) throws Exception { Socket s=new Socket("10.144.240.59",10004); OutputStream out=s.getOutputStream(); out.write("服务端你好啊!".getBytes()); InputStream in=s.getInputStream(); byte[] buf=new byte[1024]; int len=in.read(buf);<span style="color:#33cc00;">//这是一个阻塞式的方法,如果服务端一直没有写入数据,那么就一直等待, //只有服务端将数据写入socket流中,才开始执行</span> System.out.println(new String(buf,0,len)); s.close(); } }</span>
TCP服务端
<span style="font-size:18px;">package 网络编程; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import javax.net.ssl.SSLContext; <span style="color:#33cc00;">/** * 演示tcp传输的客户端和服务断的互访 * 需求:客户端给服务端发送消息,服务端收到后,给客户端反馈消息 * */ /* * 服务端 * */</span> public class TCP_ServerSocketDemo02 { public static void main(String[] args) throws Exception { ServerSocket scoSocket=new ServerSocket(10004); Socket s=scoSocket.accept(); String ip=s.getInetAddress().getHostAddress();<span style="color:#33cc00;">//获取ip</span> System.out.println(ip+"----"); <span style="color:#33cc00;">//现将socket流中输入流中的数据读取</span> InputStream in = s.getInputStream(); byte [] b=new byte[1024]; int a=in.read(b); System.out.println(new String(b,0,a)); <span style="color:#33cc00;">//用socket流中的输出流将已经读取到的消息反馈回去</span> OutputStream out= s.getOutputStream(); out.write("客户端我已收到消息".getBytes()); s.close();<span style="color:#33cc00;">//关闭客户端</span> scoSocket.close();<span style="color:#33cc00;">//关闭服务端,可选操作</span> } }</span>
示例三
TCP客户端
<span style="font-size:18px;">package 网络编程; <span style="color:#33cc00;">/** * 需求,建立一个文本转换器 * 客户端将文本发送给服务端,服务端将文本转换为大写返回给客户端 * 二区客户端可以不断的进行文本转换,当客户端输入over时,转换结束。 * 分析: * 客户端 * 既然是操作设备上的数据那么就可以使用io技术,并按照io的操作来思考 * 客户端的源:键盘输入 * 客户端的目的:网络输出流 * 操作的是文本数据,可以用字符流 * * 步骤 * 1、建立服务 * 2、键盘输入 * 3、将数据发送给服务端 * 4、获取服务端返回的大写数据 * 5、结束关闭资源 </span>*/ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; public class TCP_SocketDemo03 { public static void main(String[] args) throws Exception { <span style="color:#33cc00;">// 建立服务,指定端口</span> Socket s = new Socket("10.144.240.59", 10005); <span style="color:#33cc00;">//目的:网络输出流,将数据写给服务端</span> BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter( s.getOutputStream())); <span style="color:#33cc00;">//源: 获取键盘输入数据</span> BufferedReader bReader = new BufferedReader(new InputStreamReader( System.in)); <span style="color:#33cc00;"> //定义一个socket读取流,读取服务端返回的大写信息 </span> BufferedReader bIn=new BufferedReader(new InputStreamReader( s.getInputStream())); String data=null; while ((data=bReader.readLine()) !=null) { if ("over".equals(data)) { break; } <span style="color:#33cc00;"> //将数据写给服务端 </span> bWriter.write(data); bWriter.newLine();<span style="color:#33cc00;">//添加一个换行符,充当结束标记 </span> bWriter.flush();<span style="color:#33cc00;">//数据在缓冲区中,需要刷新</span> <span style="color:#33cc00;"> //从服务端获取转换后的大写数据</span> String str=bIn.readLine(); System.out.println("大写"+str); } bReader.close();<span style="color:#33cc00;">//关闭键盘录入</span> s.close();<span style="color:#33cc00;">//关闭服务端</span> } }</span>TCP服务端
<span style="font-size:18px;">package 网络编程; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; <span style="color:#33cc00;">/** * 需求,建立一个文本转换器 * 客户端将文本发送给服务端,服务端将文本转换为大写返回给客户端 * 二区客户端可以不断的进行文本转换,当客户端输入over时,转换结束。 * * 服务端 * 源:socket中的读取流 * 目的:socket中的输出流 *</span>/ public class TCP_ServerSocketDemo03 { public static void main(String[] args) throws Exception { ServerSocket ssocket=new ServerSocket(10005); <span style="color:#33cc00;">//获取连接的客户端</span> Socket s=ssocket.accept(); <span style="color:#33cc00;">//获取ip</span> String ip=s.getInetAddress().getHostAddress(); System.out.println("连接的ip为"+ip); <span style="color:#009900;">//源:获取socket流中的读取流</span> BufferedReader bReader=new BufferedReader(new InputStreamReader( s.getInputStream())); <span style="color:#33cc00;">//目的,获取socket流中的输出流,并将大写数据写入到socket流中,并发送给客户端</span> BufferedWriter bWriter=new BufferedWriter(new OutputStreamWriter( s.getOutputStream())); String str=null; while ((str=bReader.readLine()) !=null) { System.out.println(str); str= str.toUpperCase(); bWriter.write(str); bWriter.newLine();<span style="color:#33cc00;">//添加一个换行符,充当结束标记</span> bWriter.flush();<span style="color:#33cc00;">//数据在缓冲区中,需要刷新</span> } s.close(); ssocket.close(); }</span> }
相关文章推荐
- 网络编程UDP的一些基本操作应用
- 【转】C#网络编程(基本概念和操作)Part.1
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】
- C#网络编程(基本概念和操作) - Part.1
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- linux网络编程的一些基础知识--TCP协议相关
- C#网络编程(基本概念和操作) - Part.1
- C#网络编程(基本概念和操作) - Part.1
- Windows sockets网络开发-基本TCP套接字编程
- C#网络编程(基本概念和操作)
- 一、Linux网络编程-TCP/IP基础(一)ISO/OSI参考模型、TCP/IP四层模型、基本概念
- [转载]TCP的网络编程中一些典型的问题,以及一些分析和解决方案
- 黑马程序员-------Java笔记--------网络编程(UDP与TCP基本步骤)
- C#网络编程(基本概念和操作) - Part.1
- 关于网络编程中MTU、TCP、UDP优化配置的一些总结
- Java网络编程实践和总结 --- 基于TCP的Socket编程之echo回显的操作
- SSD8网络的一些事 网络编程的基本概念,TCP/IP协议简介
- C#网络编程(基本概念和操作) - Part.1
- C#网络编程(基本概念和操作) - Part.1