您的位置:首页 > 编程语言 > Java开发

以socket为基础的java聊天软件

2017-06-05 17:01 387 查看
package MultiTalkServer;

import java.net.*;

import java.io.*;

public class MultiTalkServer

{

    public static void main(String[] args) throws IOException

{

        ServerSocket serverSocket = null;

        boolean listening = true;

int clientNumber = 0;

        try {

            serverSocket = new ServerSocket(4444);

        } catch (IOException e)

{

            System.err.println("Could not listen on port: 4444.");

            System.exit(-1);

        }

        while (listening)

{

Socket socket;

socket = serverSocket.accept();  //程序将在此等候客户端的连接

clientNumber++;

new MultiTalkServerThread(socket, clientNumber).start();

}

        serverSocket.close();

    }

}

class MultiTalkServerThread extends Thread

{

private Socket socket = null;

private int clientNumber;

public MultiTalkServerThread(Socket socket, int clientNumber)

{

super("MultiTalkServerThread");

this.socket = socket;

this.clientNumber = clientNumber;

System.out.println("Accept Client" + clientNumber);

}

public void run()

{

try {

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);  //auto flush

BufferedReader in = new BufferedReader(

new InputStreamReader(

socket.getInputStream()));

BufferedReader sin = new BufferedReader( new InputStreamReader( System.in ) );

String sinputLine, inputLine;

boolean sinbye = false;

boolean inbye = false;

        

inputLine = in.readLine();

System.out.println( "from Client" + clientNumber + ": " + inputLine );

while( true )

{

if(inputLine.equals("Bye."))

{

inbye = true;

sinbye = true;

sinputLine = "Bye.";

out.println(sinputLine);

out.flush();

System.out.println("Server: " + "Reply to client " + clientNumber +" : " + sinputLine);

}

else

{

sinputLine = "Reply to client " + clientNumber +" : " + inputLine;

out.println(sinputLine);

out.flush();

System.out.println("Server: " + sinputLine);

}

if( sinbye == true && inbye == true )

break;

if( inbye == false )

{

inputLine = in.readLine();

System.out.println( "form Client " + clientNumber + ": " + inputLine );

}

}

out.close();

in.close();

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

    }
}

package SingleTalkClient;

import java.io.*;

import java.net.*;

public class SingleTalkClient

{

    public static void main(String[] args) throws IOException

{

        Socket client = null;

        PrintWriter out = null;

        BufferedReader in = null;

        try {

            client = new Socket("127.0.0.1", 4444);

            out = new PrintWriter(client.getOutputStream(), true); //auto flush

            in = new BufferedReader(new InputStreamReader(client.getInputStream()));

        } catch (UnknownHostException e) {

            System.err.println("Don't know about host: 127.0.0.1.");

            System.exit(1);

        } catch (IOException e) {

            System.err.println("Couldn't get I/O for the connection to: 127.0.0.1.");

            System.exit(1);

        }

        //从标准输入流(键盘)中获取信息

BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

        

String fromServer, fromUser;

boolean sbye = false;

boolean ubye = false;

System.out.print("Client input:");

fromUser = stdIn.readLine();

        while( true )  

{

if( ubye == false )

{

out.println(fromUser);

out.flush();

//System.out.println("Client: " + fromUser);

if (fromUser.equals("Bye."))

ubye = true;

}

if( sbye == false )

{

fromServer = in.readLine();

System.out.println("from Server: " + fromServer);

if (fromServer.equals("Bye."))

sbye = true;

}

if( ubye == false )

{

System.out.print("Client input:");

fromUser = stdIn.readLine();

}

if( ubye == true && sbye == true )

break;

        }

        out.close();

        in.close();

        stdIn.close();

        client.close();

    }

}

package SingleTalkServer;

9afa

import java.net.*;

import java.io.*;

import java.net.*;

import java.io.*;

public class SingleTalkServer

{

    public static void main(String[] args) throws IOException

{

        ServerSocket serverSocket = null;

        try {

            serverSocket = new ServerSocket(4444);

        } catch (IOException e) {

            System.err.println("Could not listen on port: 4444.");

            System.exit(1);

        }

        Socket clientSocket = null;

        try {

            clientSocket = serverSocket.accept();  //程序将在此等候客户端的连接

        } catch (IOException e) {

            System.err.println("Accept failed.");

            System.exit(1);

        }

System.out.println("Accept OK!");

        //打开输入/输出流

PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);  //auto flush

        BufferedReader in = new BufferedReader(

new InputStreamReader(

clientSocket.getInputStream()));

//从标准输入流(键盘)中获取信息

        BufferedReader sin = new BufferedReader( new InputStreamReader( System.in ) );

boolean  sinbye = false;

boolean  inbye = false;

String sinputLine, inputLine;

        

        inputLine = in.readLine();

System.out.println( "from Client: " + inputLine );

System.out.print("Server input:");

sinputLine = sin.readLine();

        while( true )

{

if( sinbye == false )

{

out.println(sinputLine);

out.flush();

//System.out.println("Server: " + sinputLine);

if (sinputLine.equals("Bye."))

sinbye = true;

}

if( inbye == false )

{

inputLine = in.readLine();

System.out.println( "from Client: " + inputLine );

if (inputLine.equals("Bye."))

inbye = true;

}

if( sinbye == false )

{

System.out.print("Server input:");

sinputLine = sin.readLine();

}

if( sinbye == true && inbye == true )

break;

        }

        out.close();

        in.close();

sin.close();

        clientSocket.close();

        serverSocket.close();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: