分享
 
 
 

一个简单的网络即时通讯程序

王朝java/jsp·作者佚名  2005-11-28
窄屏简体版  字體: |||超大  

[code]import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import java.lang.*;

import java.util.*;

public class messageMain extends JFrame {

private int UserCount=0;

private PipedInputStream in = new PipedInputStream();

private PipedOutputStream out = new PipedOutputStream();

TextArea textArea1 = new TextArea();

TextArea textArea2 = new TextArea();

Button button1 = new Button();

JLabel jLabel1 = new JLabel();

JComboBox jComboBox1 = new JComboBox();

JLabel jLabel2 = new JLabel();

JTextField jTextField1 = new JTextField();

public messageMain()

{

try {

jbInit();

this.setBounds(100,200,410,370);

this.validate();

this.setVisible(true);

this.setTitle("网络通信测试 V1.0");

}

catch(Exception ex) {

ex.printStackTrace();

}

}

void jbInit() throws Exception

{

textArea1.setColumns(10);

textArea1.setFont(new java.awt.Font("Dialog", 0, 14));

textArea1.setText("");

textArea1.setBounds(new Rectangle(9, 152, 384, 139));

this.getContentPane().setLayout(null);

textArea2.setBounds(new Rectangle(8, 5, 384, 139));

textArea2.setColumns(0);

textArea2.setEditable(false);

textArea2.setFont(new java.awt.Font("宋体", 0, 14));

textArea2.setRows(0);

textArea2.setSelectionEnd(0);

textArea2.setSelectionStart(10);

textArea2.setText("");

button1.setLabel("发送");

button1.setBounds(new Rectangle(311, 299, 81, 25));

button1.addActionListener(new messageMain_button1_actionAdapter(this));

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setLocale(java.util.Locale.getDefault());

this.setResizable(false);

this.setTitle("");

jLabel1.setFont(new java.awt.Font("黑体", 0, 14));

jLabel1.setText("IP地址:");

jLabel1.setBounds(new Rectangle(8, 303, 86, 16));

jComboBox1.setEditable(true);

jComboBox1.setBounds(new Rectangle(61, 302, 99, 20));

jLabel2.setFont(new java.awt.Font("黑体", 0, 14));

jLabel2.setText("呢称:");

jLabel2.setBounds(new Rectangle(172, 304, 52, 16));

jTextField1.setToolTipText("");

jTextField1.setBounds(new Rectangle(214, 301, 80, 21));

this.getContentPane().add(textArea1, null);

this.getContentPane().add(textArea2, null);

this.getContentPane().add(jLabel1, null);

this.getContentPane().add(jComboBox1, null);

this.getContentPane().add(jLabel2, null);

this.getContentPane().add(jTextField1, null);

this.getContentPane().add(button1, null);

}

//主方法

public static void main(String[] args)

{

messageMain messageMain = new messageMain();

//执行getMessage()方法

for(int i=2;i<10;i++)

{

messageMain.jComboBox1.addItem("172.30.23."+i);

}

messageMain.getMessage();

}

//接受信息

public void getMessage()

{

ServerSocket server;

Socket socket;

String info="";

try

{

server = new ServerSocket(1414);

System.out.println("\nSocket监听服务已经启动。");

System.out.println("正在等待客户端程序的请求 ...\n");

UserCount++;

while(true)

{

socket = server.accept();

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

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

info = in.readLine();

if(info!=null)

{

showMessage(info);

//System.out.print(info);

}

out.close();

in.close();

socket.close();

if(UserCount==0)//0为不限制连接人数。

break;

}

server.close();

}

catch(Exception e)

{

System.out.println(e.toString());

}

}

//显示信息

public void showMessage(String info)

{

String message="";

message+=info+'\n'+textArea2.getText();

textArea2.setText(message);

}

//发送信息

void button1_actionPerformed(ActionEvent e)

{

String message="";

String ip="";

Socket connection;

try

{

String name="";

ip=(String)jComboBox1.getSelectedItem();

name=jTextField1.getText();

if(textArea1.getText().equals(""))

{

String s="系统消息:消息不允许为空!消息没有发送成功!";

showMessage(s);

}

else

{

connection = new Socket(InetAddress.getByName(ip), 1414);

//BufferedReader SvrIn = new BufferedReader(new InputStreamReader(connection.getInputStream()));

PrintWriter SvrOut = new PrintWriter(connection.getOutputStream(), true);

message = textArea1.getText();

showMessage("我对"+ip+"说>" + message);

if (name.equals(""))

{

SvrOut.println(InetAddress.getLocalHost() + "对您说>" + message);

}

else

{

SvrOut.println(name + "对您说>" + message);

}

//关闭连接

connection.close();

}

//清空textArea1的内容

textArea1.setText("");

}

catch(Exception ex)

{

System.out.println("\n系统信息:访问异常!");

showMessage("系统信息:用户"+ip+"不在线!"+'\n'+" 消息“"+textArea1.getText()+"”没有发送成功!");

textArea1.setText("");

}

}

}

class messageMain_button1_actionAdapter implements java.awt.event.ActionListener {

messageMain adaptee;

messageMain_button1_actionAdapter(messageMain adaptee) {

this.adaptee = adaptee;

}

public void actionPerformed(ActionEvent e) {

adaptee.button1_actionPerformed(e);

}

}

[/code]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有