Tcp聊天室.txt //tcptry {//获取Tcp socket对象 socket1 = new Socket("127.0.0.1", 554); //获取socket输出流 OutputStream outputStream = socket1.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(outputStream,"UTF-8")
//tcp try { //获取Tcp socket对象 socket1 = new Socket("127.0.0.1", 554); //获取socket输出流 OutputStream outputStream = socket1.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(outputStream,"UTF-8"); PrintWriter pw = new PrintWriter(osw,true); //读取TS文件数据 // in = new FileInputStream(new File("D:/java/2017022012033239.ts")); in = new FileInputStream(new File("D:/mpg4/2017022012033239.ts")); byte[] buf = new byte[188]; int len; pw.println("RTSP/1.0 200 OK\r\n" + "CSeq:6\r\n" + "Server:Red5/7.0.4 (Build/16.0108; Platform/Win32; Release/Red5; State/Development;)\r\n\r\n"); while((len=in.read(buf))!=-1) { String a = String.valueOf(buf); //输出 pw.println(a); } } catch (Exception e) { // TODO Auto-generated catch block System.out.println(e); }finally{ try { //关闭流 socket.close(); in.close(); } catch (Exception e2) { // TODO: handle exception } } -----------------------服务端 package chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; /** * 聊天室服务端 * @author Administrator * */ public class test3 { /* * java.net.ServerSocket * 运行在服务端的ServerSocket有两个作用 * 1:申请服务端口(客户端通过该端口与服务端建立连接) * 2:监听服务端口,等待客户端连接.一旦客户端连接则 * 创建一个Socket实例用于与该客户端交互. */ private ServerSocket server; public test3() throws Exception{ try { /* * 实例化ServerSocket需要指定 * 服务端口.该端口不能与当前操作系统 * 其他程序申请的端口冲突,否则会抛出 * 端口被占用异常 */ server = new ServerSocket(6666); } catch (Exception e) { throw e; } } public void start(){ try { /* * ServerSocket提供了方法: * Socket accept() * 该方法是一个阻塞方法,作用是监听 * ServerSocket开启的服务端口, * 直到一个客户端通过该端口连接,该方法 * 才会解除阻塞,并返回一个Socket实例 * 通过该Socket实例与刚刚建立连接的 * 客户端进行通讯. */ while(true){ System.out.println("等待客户端连接..."); Socket socket = server.accept(); System.out.println("一个客户端连接了!"); /* * 当一个客户端连接后,启动一个线程来处理 * 与该客户端的交互工作. */ ClientHandler handler = new ClientHandler(socket); Thread t = new Thread(handler); t.start(); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { try { test3 server = new test3(); server.start(); } catch (Exception e) { e.printStackTrace(); } } /** * 该线程负责与指定的客户端进行交互 * @author Administrator * */ class ClientHandler implements Runnable{ /* * 当前线程负责与指定客户端交互的Socket */ private Socket socket; //客户端的地址信息 private String host; public ClientHandler(Socket socket){ this.socket = socket; /* * 通过socket获取远程计算机地址信息 * 对于服务端而言,远程计算机就是客户端 */ InetAddress address = socket.getInetAddress(); //获取远端计算机IP host = address.getHostAddress(); } public void run(){ try { System.out.println(host+"上线了!"); InputStream in = socket.getInputStream(); InputStreamReader isr = new InputStreamReader( in,"UTF-8" ); BufferedReader br = new BufferedReader(isr); String message = null; /* * br.readLine读取客户端发送过来的一行字符串 * 时,客户端断开连接时,由于客户端所在系统不同, * 这里readLine方法的执行结果也不相同: * 当windows的客户端断开连接时,readLine方法 * 会直接抛出异常 * 当linux的客户端断开连接时,readLine方法会 * 返回null. * */ while((message = br.readLine())!=null){ System.out.println(host+"说:"+message); } } catch (Exception e) { } finally{ //客户端与服务端断开连接. System.out.println(host+"下线了!"); try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } ---------------------------客户端 package chat; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; /** * 聊天室客户端 * @author Administrator * */ public class test4 { /* * * /sbin/ifconfig * * java.net.Socket 套接字 * 封装了TCP通讯.使用该类完成与服务端的连接 * 并进行相应的通讯. * */ private Socket socket; /** * 构造方法用来初始化客户端 */ public test4()throws Exception{ try { /* * 实例化Socket时需要传入两个参数 * 1:服务端的地址 * 2:服务端的端口 * * 通过地址找到服务端的计算机,端口 * 则找到该计算机上的服务端应用程序. * * 实例化Socket的过程就是连接服务端 * 的过程.连接不成功该构造方法会抛出 * 异常. */ System.out.println("正在连接服务端..."); socket = new Socket( "localhost", 6666 ); System.out.println("与服务端建立连接!"); } catch (Exception e) { throw e; } } /** * 客户端的启动方法 */ public void start(){ try { Scanner scanner = new Scanner(System.in); /* * Socket提供了方法: * OutputStream getOutputStream() * 该方法可以获取一个字节输出流,通过 * 该输出流写出的数据会发送至远端计算机 * 对于客户端这边而言远端是服务端. */ OutputStream out = socket.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter( out,"UTF-8"); PrintWriter pw = new PrintWriter(osw,true); String message = null; while(true){ message = scanner.nextLine(); pw.println(message); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { try { test4 client = new test4(); client.start(); } catch (Exception e) { e.printStackTrace(); } } }