⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 一个小的聊天程序
💻 JAVA
字号:
package talk.npt;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.net.*;

class Client {
    private Socket cltSocket;
    private PrintWriter out;
    private BufferedReader in;
    private InetAddress addr;
    private int port;
    private String ipAddress;
    private SimpleTalk.OutputActionListener listener;
    private String name = "过客";
    
    
    public Client(String ipAddress, int port, ActionListener listener){
    	this.ipAddress = ipAddress;
    	this.port = port;
    	this.listener = (SimpleTalk.OutputActionListener) listener;
    }
    
    public void connect(){
        try {
    	    addr = InetAddress.getByName(ipAddress);
	    cltSocket = new Socket(addr, port);
            //outputArea.append("Connection setup!\n");
            in =
                new BufferedReader(
                new InputStreamReader(
                cltSocket.getInputStream()));
            // Output is automatically flushed
            // by PrintWriter:
            out =
                new PrintWriter(
                new BufferedWriter(
                new OutputStreamWriter(
                cltSocket.getOutputStream())),true);
            new ListeningInput().start();
        } catch(Exception ex) {
                ex.printStackTrace();
        }
    }
    
    class ListeningInput extends Thread {
    	public void run(){
    	    try{
		listen();
            } catch(IOException e) {
            	listener.setInputMsg("Connection closed.\n");
                listener.actionPerformed(
                	new ActionEvent(Client.this,
			ActionEvent.ACTION_PERFORMED, null));
            }
	}
	private void listen() throws IOException{
    	    try{
    		while(true){
                    String str_out= new String();
                    String sin;
                    while((sin=in.readLine()).length() != 0 )
                    //while((sin=in.readLine()) != null ){
                        str_out += sin + "\n";
                    listener.setInputMsg( str_out);
                    listener.actionPerformed(
                	new ActionEvent(Client.this,
			ActionEvent.ACTION_PERFORMED, null));
    		}
            } finally {
                listener.setInputMsg("Socket closed.\n");
                listener.actionPerformed(
                    new ActionEvent(Client.this,
		    ActionEvent.ACTION_PERFORMED, null));
		closeConnection();
            }
        }
    }
    
    public void sendMessage(String msg){
        out.println( name + ": " + msg + "\n" );
    }
    
    public void closeConnection() throws IOException {
    	cltSocket.close();
    }
    
    public void setName(String name){
    	if(name != "")
    	    this.name = name;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -