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();
}
}
}
