Java - 网络编程 - TCP
来源:互联网 发布:spine导入到unity3d 编辑:程序博客网 时间:2024/05/15 13:10
package mynet;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class TcpClient {/**************************************************** * TCP图片客户端 * * 1.创建图片客户端Socket,建议指定服务器和服务器端口 * * 2.连接建立成功,数据通道建立。可以使用Socket流传输数据。* * 3.使用输出流把数据传输到服务器端 * * 4.关闭资源* */public static void main(String[] args) throws IOException {// 1.创建一个图片客户端Socket socket = new Socket("127.0.0.1", 12345);// 2.获取Socket输出流OutputStream socketOut = socket.getOutputStream();// //验证要上传的文件////////////////////////File file = new File("141.mp3");if (!file.exists())throw new RuntimeException("文件不存在");// 获取文件后缀String suffix = getFileSuffix(file.getName());if (suffix.equals("false"))throw new RuntimeException("只能上传图片文件");// 将文件后缀发送给服务器socketOut.write(suffix.getBytes());socketOut.flush();// 3.创建一个用于读取本地图片的字节流FileInputStream fis = new FileInputStream(file);// 4.自定义缓冲区byte[] buf = new byte[1024];int len = 0;// 循环读取图片,循环输出图片while ((len = fis.read(buf)) != -1) {socketOut.write(buf, 0, len);socketOut.flush();}// 告诉服务器输出完毕socket.shutdownOutput();// 5.获取Socket读取流,接收从服务器返回的消息。InputStream socketIn = socket.getInputStream();len = socketIn.read(buf);System.out.println(new String(buf, 0, len));fis.close();// 关闭客户端socket.close();}/** * 获取文件后缀,并判断是否满足指定格式。 * * @param 文件名字符串 * @return 返回文件后缀,如果不匹配指定格式,返回字符串"false" */private static String getFileSuffix(String name) {String[] suffixs = { ".jpg", ".png", ".gif", ".mp3" };for (String suffix : suffixs) {if (name.endsWith(suffix))return suffix;}return "false";}}
package mynet;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class TcpServer {/******************************************************************** * TCP图片服务器 * * 1.创建服务端Socke,使用ServerSocket对象。监听一个端口,否则客户端无法链接。* * 2.获取链接到服务器端的客户端对象。 * * 3.获取到客户端,就可以通过Socket流,读取客户端发来的数据。* * 4.关闭资源,关闭客户端,关闭服务端。* * 5.服务器开启多线程,线程任务,获取Socket流,接收数据。。。* ********************************************************************/static int count = 0;public static void main(String[] args) throws IOException {// 1.创建一个服务端ServerSocket server = new ServerSocket(12345);while (true) {// 2.获取客户端Socket socket = server.accept();// 阻塞式new Thread(new ServerRun(socket)).start();}}}
package mynet;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class ServerRun implements Runnable {private Socket socket;public ServerRun(Socket socket) {this.socket = socket;}public void run() {FileOutputStream fos = null;try {// 3.获取Socket读取流InputStream serverIn = socket.getInputStream();byte[] buf = new byte[1024];int len = 0;// //获取文件后缀////len = serverIn.read(buf);String suffix = new String(buf, 0, len);// 4.创建一个文件夹File dir = new File("C://jpg");if (!dir.exists())dir.mkdir();String prefix = socket.getInetAddress().getHostAddress();File file = new File(dir, prefix + suffix);if(file.exists()){//................}// 5.创建一个输出流,用于保存从客户端接收到的图片数据fos = new FileOutputStream(file);while ((len = serverIn.read(buf)) != -1) {fos.write(buf, 0, len);fos.flush();}// 6.获取Socket输出流,将信息反馈个客户端OutputStream out = socket.getOutputStream();out.write("文件上传成功".getBytes());} catch (Exception e) {// ...} finally {try {fos.close();socket.close();} catch (IOException e) {// ...}}}}
0 0
- java 网络编程 TCP
- JAVA网络编程-----tcp .
- Java - 网络编程 - TCP
- Java网络编程TCP
- java-网络编程-TCP
- JAVA 网络编程 - TCP
- Java网络编程TCP
- java网络编程 tcp
- Java TCP网络编程
- Java网络编程笔记(TCP)
- java网络编程之TCP
- java 实现TCP 网络编程
- JAVA网络编程 TCP、UDP
- JAVA网络编程:TCP通信
- java网络编程之TCP
- JAVA网络编程-----TCP通信
- Java-网络编程(TCP传输)
- java网络编程----TCP UDP
- 素数环(dfs)
- java.text.NumberFormat
- 【2014/09/11】 linux笔记 vim
- java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver解决办法
- uva 10821 - Constructing BST(BSF)
- Java - 网络编程 - TCP
- C语言中的宏定义
- 看到Matrix67博客矩阵迭代分形,感觉不错
- HDU 1536 - S-Nim(SG)
- poj1328
- 关于AndroidManifest.xml开发中使用系统权限报错的问题
- leetcode面试题1:Reverse Words in a String
- HDU5014:Number Sequence
- IOS 推送功能的实现