TCP實(shí)現(xiàn)聊天

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
public class Test1 {
? ?//客戶端
? ?public static void main(String[] args) throws IOException {
? ? ? ?//擴(kuò)大作用域
? ? ? ?Socket socket=null;
? ? ? ?OutputStream os=null;
? ? ? ?try {
? ? ? ? ? ?//聲明本機(jī)地址
? ? ? ? ? ?InetAddress LocalIp=InetAddress.getByName("127.0.0.1");
? ? ? ? ? ?//說(shuō)明服務(wù)器地址
? ? ? ? ? ?int port=521;
? ? ? ? ? ?//建立鏈接,將本機(jī)ip與服務(wù)器端口連接,存到這個(gè)對(duì)象上
? ? ? ? ? ?socket = new Socket(LocalIp,port);
? ? ? ? ? ?//建立輸出內(nèi)容媒介
? ? ? ? ? ?os=socket.getOutputStream();
? ? ? ? ? ?//發(fā)送消息
? ? ? ? ? ?os.write("過(guò)年好?。?!".getBytes(StandardCharsets.UTF_8));
? ? ? ?} catch (UnknownHostException e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ?}finally {
? ? ? ? ? ?if (socket!=null)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?socket.close();
? ? ? ? ? ? ? ?} catch (IOException e) {
? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? ?if (os!=null)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?os.close();
? ? ? ? ? ? ? ?} catch (IOException e) {
? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ?}
}
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Test2 {
? ?//服務(wù)端
? ?public static void main(String[] args) {
? ? ? ?ServerSocket serverSocket=null;
? ? ? ?Socket socket=null;
? ? ? ?InputStream is=null;
? ? ? ?ByteArrayOutputStream tunnel=null;
? ? ? ?try {
? ? ? ? ? ?//設(shè)立服務(wù)器端口
? ? ? ? ? ?serverSocket=new ServerSocket(521);
? ? ? ? ? ?//等待客戶端連接
? ? ? ? ? ?socket=serverSocket.accept();
? ? ? ? ? ?//讀取客戶端的消息
? ? ? ? ? ?is=socket.getInputStream();
? ? ? ? ? ?//建立管道流
? ? ? ? ? ?tunnel= new ByteArrayOutputStream();
? ? ? ? ? ?//建立緩沖區(qū)
? ? ? ? ? ?byte[] buffer= new byte[1024];
? ? ? ? ? ?int len;//長(zhǎng)度
? ? ? ? ? ?while((len=is.read(buffer))!=-1) //單個(gè)字符流入
? ? ? ? ? ?{
? ? ? ? ? ? ? ?tunnel.write(buffer,0,len);//放水
? ? ? ? ? ?}
? ? ? ? ? ?System.out.println(tunnel.toString());
? ? ? ?} catch (Exception e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ?}finally {
? ? ? ? ? ?if (tunnel!=null)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?tunnel.close();
? ? ? ? ? ? ? ?} catch (IOException e) {
? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? ?if (is!=null)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?is.close();
? ? ? ? ? ? ? ?} catch (IOException e) {
? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? ?if (socket!=null)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?socket.close();
? ? ? ? ? ? ? ?} catch (IOException e) {
? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? ?if (serverSocket!=null)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?serverSocket.close();
? ? ? ? ? ? ? ?} catch (IOException e) {
? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ?}
}