网络编程(TCP)
来源:互联网 发布:php ajax 跨域 jsonp 编辑:程序博客网 时间:2024/05/16 08:57
TCP传输
● Socket和ServerSocket● 建立客户端和服务器端
● 建立连接后,通过Socket中的IO流进行数据的传输。
● 关闭Socket
同样,客户端与服务器端是两个独立的应用程序。
演示tcp传输。
1.tcp分客户端和服务器端。
2.客户端对应的对象是Socket,服务器端对应的对象是ServerSocket。
需求:客户端给服务端发送数据,服务端收到后,给客户反馈信息。
package it.practise.com.socket;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;/* * 演示tcp的传输的客户端和服务端的互访。 * 需求:客户端给服务端发送数据,服务端收到后,给客户反馈信息。 */public class TcpDemo2 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub}}/* * 客户端 * 1。建立Socket服务,制定要连接的主机和端口。 * 2。获取Socket流中的输出流,将数据写到该流中,通过网络发送给服务端。 * 3。获取Socket流中的输入流,将服务器端反馈的数据获取到,并打印。 * 4。关闭客户端资源。 */class TcpClient2 {public static void main(String[] args) throws Exception {Socket s = new Socket("192.168.0.100", 10004);OutputStream out = s.getOutputStream();out.write("Hello! Server さん.".getBytes());InputStream in = s.getInputStream();byte[] buf = new byte[1024];int len = in.read(buf);System.out.println(new String(buf, 0, len));}}class TcpServer2 {public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(10004);Socket s = ss.accept();String ip = s.getInetAddress().getHostAddress();System.out.println(ip + "...cennected");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("Hello! Clent さん.".getBytes());s.close();ss.close();}}
练习:建立一个文本转换服务器。
客户端给服务端发送文本,服务端将文本转成大写,返回给客户端。
而且客户端可以不断的进行文本转换,客户端输入over,结束。
既然是操作设备上的数据,那么就可以使用IO技术,并按照IO操作规则来思考。
源:键盘录入
目的:网络设备,网络输出流。而且操作是文本数据,可以选择字符流。
步骤:
1.建立服务。
2.获取键盘录入。
3.将数据发送给服务端。
4.获取服务端返回的数据。
5.结束,关闭资源。
package it.practise.com.socket;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;public class TextConvert {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub}}class TransClient {public static void main(String[] args) throws Exception {Socket s = new Socket("192.168.0.100", 10005);// 定义读取键盘录入BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 定义目的,将数据写入到socket输出流,发送给服务器。BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//定义一个socket读取流,读取服务端返回的大写信息,BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));String line = null;while((line = br.readLine()) != null) {if("over".equals(line))break;bufOut.write(line);bufOut.newLine();bufOut.flush();String data = bufIn.readLine();System.out.println(data);}br.close();s.close();}}class TransServer {public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(10005);Socket s = ss.accept();String ip = s.getInetAddress().getHostAddress();System.out.println(ip + "...connected !");// 读取socket读取流中的信息BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));// 将转换后的数据写入到socket输入流,并发送给客户端BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line = null;while((line = bufIn.readLine()) != null) { bufOut.write(line.toUpperCase()); bufOut.newLine(); bufOut.flush();}s.close();ss.close();}}
练习:TCP上传图片
Ps:shutdownOutput() 关闭客户端的输出流,相当于给流中加入一个结束标记-1
package it.practise.com.socket;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class UploadPicture {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub}}class PictureClient {public static void main(String[] args) throws Exception {Socket s = new Socket("", 10006);BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("G:\\demo\\songshu.gif")));BufferedOutputStream bisOut = new BufferedOutputStream(s.getOutputStream());byte[] buf = new byte[1024 * 1024];int len = 0;while((len = bis.read(buf)) != -1) {bisOut.write(buf, 0, len);}s.shutdownOutput();BufferedReader brIn = new BufferedReader(new InputStreamReader(s.getInputStream()));String line = brIn.readLine();System.out.println(line);bis.close();s.close();}}class PictureServer {public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(10006);Socket s = ss.accept();String ip = s.getInetAddress().getHostAddress();System.out.println(ip + "...connected !");BufferedInputStream bisIn = new BufferedInputStream(s.getInputStream());FileOutputStream fos = new FileOutputStream(new File("G:\\songshu.gif"));byte[] buf = new byte[1024 * 1024];int len = 0;while((len = bisIn.read(buf)) != -1) {fos.write(buf, 0, len);}PrintWriter pw = new PrintWriter(s.getOutputStream(), true);pw.println("上传成功!");fos.close();s.close();ss.close();}}
package it.practise.com.socket;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;public class TextConvert {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub}}class TransClient {public static void main(String[] args) throws Exception {Socket s = new Socket("192.168.0.100", 10005);// 定义读取键盘录入BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 定义目的,将数据写入到socket输出流,发送给服务器。BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//定义一个socket读取流,读取服务端返回的大写信息,BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));String line = null;while((line = br.readLine()) != null) {if("over".equals(line))break;bufOut.write(line);bufOut.newLine();bufOut.flush();String data = bufIn.readLine();System.out.println(data);}br.close();s.close();}}class TransServer {public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(10005);Socket s = ss.accept();String ip = s.getInetAddress().getHostAddress();System.out.println(ip + "...connected !");// 读取socket读取流中的信息BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));// 将转换后的数据写入到socket输入流,并发送给客户端BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line = null;while((line = bufIn.readLine()) != null) { bufOut.write(line.toUpperCase()); bufOut.newLine(); bufOut.flush();}s.close();ss.close();}}
0 0
- TCP/IP网络编程
- TCP/IP网络编程
- dotnet 网络编程 tcp
- 网络编程TCP
- 网络编程 TCP
- 网络编程 TCP续
- 网络编程—TCP
- 网络编程(tcp文件服务器)
- TCP网络编程
- java 网络编程 TCP
- 网络编程--TCP协议
- TCP网络编程&&UDP
- QT网络编程-TCP
- 网络编程之TCP
- 网络编程 UDP TCP
- 网络编程--TCP
- 网络编程TCP
- 网络编程(TCP/UDP)
- 开发一个软件平台的一些心得体会
- ART运行时Compacting GC堆创建过程分析
- 千山万水之Hibernate(二)——Hibernate的三态
- 访问控制模型(Access Control Model)
- 5.5 收包系统调用
- 网络编程(TCP)
- RFID:智能卡的发展以及射频电子标签在其中所处的位置
- DedeCms 5.7后台去除版权及去除广告链操作详解
- method_opt中参数 auto跟skewonly的区别
- 【决策树】— C4.5算法建立决策树JAVA练习
- Redis+EJB缓存实现(三)
- 计算机网络总结( 零)
- Maven 笔记
- 电子标签芯片的组成及功能