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

📄 clientthread.java

📁 java编写的一个网络象棋,通过对方ip连接,开始游戏,同时可以进行聊天,聊天部分通过线程实现,可以同时进行多个会话.
💻 JAVA
字号:
package chatAndNet;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import javax.swing.border.*;
import cchess.MainFrame;
import javax.swing.*;


public class ClientThread extends Thread{
	private Socket connectToServer ;
	private DataInputStream inFromServer;
	private DataOutputStream outToServer;
    private int index = 0;
	private int flag = 0;

    private String textInput = null;
	private JTextArea chatArea1 = new JTextArea();
    private JTextArea chatArea2 = new JTextArea();
    
	private String localip = null ;
	private String iptemp = null;
	private String s = null;
	
	public ClientThread(InetAddress addr, int por,
			            String clientName) throws IOException{
		
		super(clientName);  //调用线程式你类的构造方法,给线程式命名...
		
		iptemp =  InetAddress.getLocalHost().toString();   
		for(int i=0;i<iptemp.length();i++){
		    if(iptemp.charAt(i)=='/'){
		    	localip = iptemp.substring(i+1);
		    }
		}
		
		connectToServer = new Socket(addr,por);
		inFromServer = new DataInputStream(connectToServer.getInputStream());
		outToServer = new DataOutputStream(connectToServer.getOutputStream());
		
		outToServer.writeUTF(localip);
             outToServer.flush();
        s = inFromServer.readUTF() ;  
	    System.out.println(s);
		start();
	}
	
	public void run(){
		try{
	        MainFrame.tablePane.add(s,new ChatPane());
			while(true){
	     		   String s1 = inFromServer.readUTF();  
	               if(!s1.equals("null"+"\n")){
		                   chatArea1.append(s1);
		                   }else chatArea1.setText(null);
                   if(flag==1)	break;
			}          
	            inFromServer.close();
	            outToServer.close();
	            connectToServer.close(); 
		}catch(IOException e){
			e.getStackTrace();
		}
	}
	
	
	class  ChatPane extends JPanel{
		
		JButton okButton = new JButton("发送");
		JButton cancelButton = new JButton("关闭"); 
		JScrollPane scrollPane ;
		JPanel subPanel = new JPanel();
	
		ChatPane(){
			super();

			this.setLayout(null);
		
			addText1();
			addText2();
			addOkButton();
			addCancelButton();
		}
	
		private void addText1(){
			scrollPane = new JScrollPane();
			scrollPane.getViewport().setView(chatArea1);
			scrollPane.setViewportBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); 
			scrollPane.setBounds(5,5,360,380);
			//chatArea1.setCaretPosition( chatArea1.getDocument().getLength());
			//chatArea1.setCaretPosition(0);
            chatArea1.setEditable(false);
			this.add(scrollPane);
		}
	
		private void addText2(){
			this.add(chatArea2);
			chatArea2.setBounds(5,400,360,120);
				chatArea2.setBorder(BorderFactory.createLoweredBevelBorder());
		}
	
		private void addOkButton(){
			this.add(okButton);
			okButton.setBounds(200,530,60,25);
			okButton.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent okb){
	        		   textInput = chatArea2.getText();
	        	       chatArea2.setText(null);
	        	       String s = localip+" said to you \n"+textInput+"\n";
					   chatArea1.append(localip+"\n"+textInput+"\n");
					   try{outToServer.writeUTF(s);
					       outToServer.flush();
					   }catch(IOException send){
					    	send.printStackTrace();
					       }
	        	   }
			});
		}
    
		private void addCancelButton(){
			this.add(cancelButton);
			cancelButton.setBounds(280,530,60,25);
			cancelButton.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent ceb){
					MainFrame.tablePane.remove(index) ;
					flag = 1;
				}
			});
		}
	}
}

⌨️ 快捷键说明

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