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

📄 tcpserver2.java

📁 Java语言实现Socket结构的聊天程序,分为服务器端和客户端
💻 JAVA
字号:
 /*****************************************
 *程序功能:基于Socket结构的聊天程序服务端*
 *程 序 员:         *
 *日    期:2006年4月2日                  *
 *版    本:1.0                           *
 *修改日期:                              *
 *****************************************/
 
 
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class TcpServer2 extends WindowAdapter implements ActionListener
{
	ServerSocket server;             //提供服务的ServerSocket对象
	Socket client;                   //与客户端通信的Socket对象
	boolean flag;                    //标记是否继续提供Socket服务
	
	BufferedReader cin;              //Socket对象的字符输入流
	PrintWriter  cout;               //Socket对象的字符输出流
	
	Frame  f;                        //聊天程序界面框架
	Button SendButton;  
    Button ExitButton;  
    Label  Label1;
    Label  Label2;
    Label  Label3;  
	TextArea  DisplayArea;
	TextField InputArea;
	
	public TcpServer2()
	{
		try                          //try_catch对可能出现的异常进行处理
		{
			server=new ServerSocket(6789);  //创建服务器ServerSocket,设置连接的端口号
			this.ChatFrame("服务端端口号:" + server.getLocalPort()); //显示在聊天程序界面
			flag=true;
			
			while(flag)              //提供Socket服务
			{
				client=server.accept();   //监听Socket的连接并接收客户端请求
				DisplayArea.append("成功建立连接!"+"\n");
				  
				InputStream is=client.getInputStream();     //获取Socket对象的输入流
				cin =new BufferedReader(new InputStreamReader(is));	//创建字符输入流存入变量cin
				OutputStream os=client.getOutputStream();	//获取Socket对象的输出流
				cout =new PrintWriter(os,true);             //创建字符输出流存入变量cout
				
				String aline;
				while((aline=cin.readLine())!=null)         //等待接收输入流数据
				{
				   DisplayArea.append(aline+"\n");   //将从输入流中读入的字符串添加到多行文本框
				   if(aline.equals("bye")) //获得结束标记时停止服务
				   {
				   	  flag=false;
				   	  break;
				   }
				   				 
				}
			     is.close();                 //关闭流
				 cin.close();
				 os.close();
				 cout.close();
				 client.close();             //关闭与客户端的Socket连接	*/	
			}
		}
		catch(Exception e)
		{
			System.out.println(e);
		}
	}
	
	public void ChatFrame(String str)        //构造聊天程序窗口界面
	{
		f=new Frame("聊天程序"+str);
		f.setSize(800,600);
		BorderLayout border=new BorderLayout(5,10);
		f.setLayout(border);
		
	    DisplayArea=new TextArea();                   //创建多行文本输入区对象
	    f.add(DisplayArea,border.CENTER);
		DisplayArea.setEditable(false);               //置DisplayArea为不可编辑状态
		
		Panel p=new Panel();                 //创建面板对象
		f.add(p,border.SOUTH);                        
		InputArea=new TextField(20);                //创建文本输入行对象
		SendButton=new Button("发送");               //创建按钮对象
	    ExitButton=new Button("关闭");
		Label1=new Label("和");
		Label2=new Label("聊天");
		Label3=new Label("Message");
		
		Choice choice1=new Choice();
		choice1.add("LovelyPig");
		choice1.add("SharpKnife");
		choice1.add("Jhon");
		choice1.add("Harvey");
     				 
		p.add(Label1);
		p.add(choice1);
		p.add(Label2);
		p.add(Label3);
		p.add(InputArea);             //把InputArea添加到p上
		p.add(SendButton);             //把SendButton添加到p上
		p.add(ExitButton);
	
		SendButton.addActionListener(this);          //注册SendButton的Action事件
		ExitButton.addActionListener(this); 
	    InputArea.addActionListener(this);          //注册InputArea的Action事件
		
		f.setVisible(true);
		f.addWindowListener(this);           //注册f的Window事件
		
	}
	
	public void actionPerformed(ActionEvent e)  //处理按钮单击事件
	{
		if(e.getSource()==SendButton)
		{
			DisplayArea.append(InputArea.getText()+"\n");           //把用户当前输入的字符串添加到多行文本框对象ta上
		    cout.println(InputArea.getText());             //向Socket对象的字符输出流发送字符串
		    InputArea.setText("");
		}
		if(e.getSource()==ExitButton)
		{
		   cout.println("bye");         //向客户端发送结束标记
		   System.exit(0);              //程序运行结束
	    }
		
	}
	  
	public void windowClosing(WindowEvent e)    //单击窗口关闭按钮时的处理
	{
		cout.println("bye");         //向客户端发送结束标记
		System.exit(0);            //程序运行结束
	}
	
	public static void main(String args[])
	{
		new TcpServer2();
	}
}

⌨️ 快捷键说明

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