小弟最近从网站上下了一个JICQ 可是不知道怎么回事

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 小弟最近从网站上下了一个JICQ 可是不知道怎么回事,编译时没有问题!!就是运行不了!! 请各位高手指教!!! 谢谢!!!!!!!!!!!!!!! 分New.java Server.java MainWin.java Register.java 1.//New.java如下 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*; public class New extends JFrame {//登录窗口类 JPanel contentPane; //***************** String server;//服务器名 int serport;//端口 private Socket socket; private BufferedReader in;//输入输出流 private PrintWriter out; //***********//程序界面 JPanel jPanel1 = new JPanel(); JLabel jLabel1 = new JLabel(); JLabel jLabel2 = new JLabel(); JTextField jicq = new JTextField(); JLabel jLabel3 = new JLabel(); JPasswordField password = new JPasswordField(); JPanel jPanel2 = new JPanel(); JButton login = new JButton(); JButton newuser = new JButton(); JButton quit = new JButton(); JLabel jLabel6 = new JLabel(); JTextField servername = new JTextField(); JLabel jLabel7 = new JLabel(); JTextField serverport = new JTextField(); public New() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); server=servername.getText().toString().trim(); serport=Integer.parseInt(serverport.getText().trim()); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(null); this.setResizable(false); this.setSize(new Dimension(344, 245)); this.setTitle("New JICQ"); //contentPane.add(text, null); jPanel1.setBounds(new Rectangle(2, 3, 348, 110)); jPanel1.setLayout(null); jLabel1.setText("请输入你的信息"); jLabel1.setBounds(new Rectangle(5, 7, 103, 18)); jLabel2.setText("你的Jicq"); jLabel2.setBounds(new Rectangle(7, 66, 58, 18)); jicq.setBounds(new Rectangle(68, 65, 97, 22)); jLabel3.setText("你的密码"); jLabel3.setBounds(new Rectangle(173, 66, 67, 18)); password.setBounds(new Rectangle(237, 63, 94, 22)); jPanel2.setBounds(new Rectangle(8, 154, 347, 151)); jPanel2.setLayout(null); login.setText("登录"); login.setBounds(new Rectangle(5, 27, 79, 29)); login.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { login_mouseClicked(e); } }); newuser.setText("新建"); newuser.setBounds(new Rectangle(118, 28, 79, 29)); newuser.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { newuser_mouseClicked(e); } }); quit.setText("退出"); quit.setBounds(new Rectangle(228, 26, 79, 29)); quit.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { quit_mouseClicked(e); } }); jLabel6.setText("服务器"); jLabel6.setBounds(new Rectangle(20, 132, 41, 18)); servername.setText("hg"); servername.setBounds(new Rectangle(73, 135, 102, 22)); jLabel7.setText("端口"); jLabel7.setBounds(new Rectangle(191, 137, 41, 18)); serverport.setText("8080"); serverport.setBounds(new Rectangle(241, 131, 90, 30)); contentPane.add(jPanel1, null); jPanel1.add(jLabel1, null); jPanel1.add(jLabel2, null); jPanel1.add(jicq, null); jPanel1.add(jLabel3, null); jPanel1.add(password, null); contentPane.add(jPanel2, null); jPanel2.add(login, null); jPanel2.add(quit, null); jPanel2.add(newuser, null); contentPane.add(jLabel6, null); contentPane.add(servername, null); contentPane.add(jLabel7, null); contentPane.add(serverport, null); } protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } public static void main(String[] args) {//主程序 New f=new New(); f.setVisible(true); } void login_mouseClicked(MouseEvent e) {//登录按扭 try{Socket socket=new Socket(InetAddress.getByName(server),serport);//连接服务器 BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); out.println("login");//告诉服务器我要登录 out.println(jicq.getText()); out.println(password.getPassword()); String str=" "; //do{ str=in.readLine().trim();//从服务器读取消息 //如果失败就告诉出错 if(str.equals("false")) JOptionPane.showMessageDialog(this,"对不起,出错了:-(","ok",JOptionPane.INFORMATION_MESSAGE); else{//如果成功就打开主程序 this.dispose(); int g=Integer.parseInt(jicq.getText()); MainWin f2=new MainWin(g,server,serport); f2.setVisible(true); } //System.out.println("/n"); //}while(!str.equals("ok")); }catch(IOException e1){} } void newuser_mouseClicked(MouseEvent e) {//新建用户按纽 this.dispose(); JDialog d=new Register(server,serport);//打开新建窗口 d.pack(); d.setLocationRelativeTo(this); d.setSize(400,400); d.show(); } void quit_mouseClicked(MouseEvent e) {//关闭按扭 this.dispose(); System.exit(0); } } 2.//Register.java如下 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.net.*; import java.io.*; import javax.swing.border.*; public class Register extends JDialog {//新建用户类 //以下创建程序界面 JPanel panel1 = new JPanel(); JLabel jLabel1 = new JLabel(); JTextField nickname = new JTextField(); JLabel jLabel2 = new JLabel(); JLabel jLabel3 = new JLabel(); JPasswordField password = new JPasswordField(); JLabel jLabel4 = new JLabel(); JTextField email = new JTextField(); JLabel jLabel5 = new JLabel(); JLabel jLabel6 = new JLabel(); JTextPane info = new JTextPane(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JLabel jLabel7 = new JLabel(); JRadioButton boy = new JRadioButton(); JRadioButton girl = new JRadioButton(); JLabel jLabel8 = new JLabel(); JComboBox place = new JComboBox(); JComboBox headpic = new JComboBox(); //*************************** private String[] pics = new String[] {//头像 "1.jpg", "3.jpg", "5.jpg", "7.jpg"}; String sername;//服务器名 int serverport;//服务器端口 public Register(String s,int port) {//构造函数 sername=s; serverport=port; try { jbInit();//创建窗口 pack(); } catch(Exception ex) { ex.printStackTrace();} //this(null, "", true); } void jbInit() throws Exception {//创建窗口 panel1.setLayout(null); this.getContentPane().setLayout(null); panel1.setMaximumSize(new Dimension(200, 200)); panel1.setMinimumSize(new Dimension(200, 100)); panel1.setBounds(new Rectangle(-2, 0, 419, 452)); this.setTitle("register"); jLabel1.setText("昵称"); jLabel1.setBounds(new Rectangle(9, 45, 41, 18)); nickname.setBounds(new Rectangle(50, 44, 128, 22)); jLabel2.setText("请填写以下内容"); jLabel2.setBounds(new Rectangle(9, 9, 103, 18)); jLabel3.setText("密码"); jLabel3.setBounds(new Rectangle(200, 44, 41, 18)); password.setBounds(new Rectangle(247, 42, 100, 22)); jLabel4.setText("电子邮件"); jLabel4.setBounds(new Rectangle(2, 102, 58, 18)); email.setBounds(new Rectangle(55, 96, 124, 22)); jLabel5.setText("头像"); jLabel5.setBounds(new Rectangle(193, 96, 51, 18)); //*************** ComboBoxModel model = new HeadPicCombobox(pics); ListCellRenderer renderer = new HeadpicCellRenderer(); jLabel6.setText("个人资料"); jLabel6.setBounds(new Rectangle(6, 189, 87, 18)); info.setBounds(new Rectangle(5, 208, 363, 103)); jButton1.setText("确定"); jButton1.setBounds(new Rectangle(147, 330, 79, 29)); jButton1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { jButton1_mouseClicked(e); } }); jButton2.setText("取消"); jButton2.setBounds(new Rectangle(260, 329, 79, 29)); jLabel7.setText("性别"); jLabel7.setBounds(new Rectangle(9, 156, 41, 18)); boy.setText("男"); boy.setBounds(new Rectangle(43, 152, 38, 26)); girl.setText("女"); girl.setBounds(new Rectangle(80, 152, 36, 26)); jLabel8.setText("来自"); jLabel8.setBounds(new Rectangle(147, 154, 41, 18)); place.setToolTipText(""); place.addItem("四川"); place.addItem("重庆"); place.setBounds(new Rectangle(181, 153, 163, 22)); headpic.setBounds(new Rectangle(249, 91, 71, 28)); headpic.setModel(model); headpic.setRenderer(renderer); this.getContentPane().add(jButton1, null); this.getContentPane().add(panel1, null); panel1.add(jLabel2, null); panel1.add(jLabel1, null); panel1.add(nickname, null); panel1.add(jLabel3, null); panel1.add(password, null); panel1.add(jLabel4, null); panel1.add(email, null); panel1.add(jLabel5, null); panel1.add(info, null); panel1.add(jButton2, null); panel1.add(jLabel6, null); panel1.add(jLabel7, null); panel1.add(boy, null); panel1.add(jLabel8, null); panel1.add(girl, null); panel1.add(place, null); panel1.add(headpic, null); } void jButton1_mouseClicked(MouseEvent e) { try{ System.out.println(sername); System.out.println(serverport); Socket socket=new Socket(InetAddress.getByName(sername),serverport);//连接服务器 BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); out.println("new");//发送新建用户请求 out.println(nickname.getText().trim());//发送呢称等信息 out.println(password.getPassword()); out.println(email.getText().trim()); out.println(info.getText().trim()); out.println(place.getSelectedItem()); out.println(headpic.getSelectedIndex());//head picindex int no; no=Integer.parseInt(in.readLine()); System.out.print(no); String str=" "; //do{ str=in.readLine().trim();//从服务器读取信息 //如果出错 if(str.equals("false")) JOptionPane.showMessageDialog(this,"对不起,出错了:-(","ok",JOptionPane.INFORMATION_MESSAGE); else{//如果成功就告诉用户其号码 JOptionPane.showMessageDialog(this,"your javaicq#is" no,"ok",JOptionPane.INFORMATION_MESSAGE); this.dispose();//并打开主窗口 MainWin f2=new MainWin(no,sername,serverport); f2.setVisible(true);} //System.out.println("/n"); //}while(!str.equals("ok")); // socket.close(); }catch(IOException e1){} } } class HeadPicCombobox extends DefaultComboBoxModel {//头象列表类 public HeadPicCombobox(String[] pics) { for(int i=0; i < pics.length; i) { addElement(new Object[] { new ImageIcon(pics[i]) } ); } } public Icon getIcon(Object object) { Object[] array = (Object[])object; return (Icon)array[0]; } } class HeadpicCellRenderer extends JLabel implements ListCellRenderer { private Border lineBorder = BorderFactory.createLineBorder(Color.red, 2), emptyBorder = BorderFactory.createEmptyBorder(2,2,2,2); public HeadpicCellRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus) { HeadPicCombobox model =(HeadPicCombobox)list.getModel(); setIcon(model.getIcon(value)); if(isSelected) { setForeground(list.getSelectionForeground()); setBackground(list.getSelectionBackground()); } else { setForeground(list.getForeground()); setBackground(list.getBackground()); } if(cellHasFocus) setBorder(lineBorder); else setBorder(emptyBorder); return this; } } 3.//MainWin.java如下 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.util.Vector; import java.net.*; import java.io.*; class FindFriend2 extends JFrame {//查找好友类 JLabel jLabel1 = new JLabel(); JButton find2 = new JButton(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JButton jButton3 = new JButton(); JList list2; ///以下是好友的呢称,性别等信息 Vector nickname=new Vector(); Vector sex=new Vector(); Vector place=new Vector(); Vector jicq=new Vector(); Vector ip=new Vector(); Vector pic=new Vector(); Vector status=new Vector(); Vector emails=new Vector(); Vector infos=new Vector(); //以下临时保存好友的呢称,性别等信息 Vector tmpjicq=new Vector();//jicqid Vector tmpname=new Vector();//jicqname Vector tmpip=new Vector();//ip Vector tmppic=new Vector();//pic info Vector tmpstatus=new Vector();//status Vector tmpemail=new Vector(); Vector tmpinfo=new Vector(); //以下创建网络相关变量 Socket socket; BufferedReader in; PrintWriter out; int myid; String serverhost; int servport; DatagramPacket sendPacket; DatagramSocket sendSocket; int sendPort=5000; // JPopupMenu findmenu = new JPopupMenu(); JMenuItem look = new JMenuItem(); JMenuItem add = new JMenuItem(); public FindFriend2(int whoami,String host,int port) {//查找好友类构造函数 enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { serverhost=host; servport=port; myid=whoami; jbInit(); } catch(Exception e) { e.printStackTrace(); }//以下与服务器连接 try{socket=new Socket(InetAddress.getByName(serverhost),servport); in=new BufferedReader(new InputStreamReader(socket.getInputStream())); out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); sendSocket=new DatagramSocket(); }catch(IOException e1){} } private void jbInit() throws Exception {//以下是程序界面 jLabel1.setText("下面是在线的朋友"); jLabel1.setBounds(new Rectangle(11, 11, 211, 18)); this.getContentPane().setLayout(new FlowLayout()); find2.setText("查找"); find2.setBounds(new Rectangle(8, 289, 79, 29)); find2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { find2_mouseClicked(e); } }); jButton1.setText("next"); jButton1.setBounds(new Rectangle(110, 288, 79, 29)); jButton2.setText("up"); jButton2.setBounds(new Rectangle(211, 285, 79, 29)); jButton3.setText("cancel"); jButton3.setBounds(new Rectangle(317, 289, 79, 29)); // nickname=new Vector(); // sex=new Vector(); // place=new Vector(); ListModel model=new FindListModel(nickname,sex,place);//列表模型 ListCellRenderer renderer=new FindListCellRenderer(); list2=new JList(model); list2.setSize(200,200); list2.setBackground(new Color(255, 255, 210)); list2.setAlignmentX((float) 1.0); list2.setAlignmentY((float) 1.0); list2.setCellRenderer(renderer); list2.setVisibleRowCount(7); list2.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { list2_mousePressed(e); } }); look.setText("查看资料"); add.setText("加为好友"); add.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { add_mousePressed(e); } }); this.getContentPane().add(jLabel1, null); this.getContentPane().add(new JScrollPane(list2)); this.getContentPane().add(find2, null); this.getContentPane().add(jButton1, null); this.getContentPane().add(jButton2, null); this.getContentPane().add(jButton3, null); findmenu.add(look); findmenu.add(add); }//以下是关闭本窗口 protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { //this.dispose(); this.hide(); } } //以下向服务器发送查找好友请求 void find2_mouseClicked(MouseEvent e) { out.println("find"); DefaultListModel mm=(DefaultListModel)list2.getModel(); /find friend info try{ String s=" "; //从服务器读取好友信息 do{ s=in.readLine(); if(s.equals("over")) break; nickname.add(s); sex.add(in.readLine()); place.add(in.readLine()); ip.add(in.readLine()); emails.add(in.readLine()); infos.add(in.readLine()); }while(!s.equals("over")); /end find info //read their jicqno int theirjicq,picinfo,sta; for(int x=0;x =friendnames.size()){ fromunknow=true;//收到陌生人的消息 JOptionPane.showMessageDialog(this,"收到陌生人" infofromip "的消息","ok",JOptionPane.INFORMATION_MESSAGE); } }while(index4
JICQ——Java即时通讯工具 ————供广大网友赏析 (0.61更新与补充说明版本说明) 近来忽闻,我的JICQ在CSDN上得到发布,惊喜之余,深表惭愧。喜的是:真没想到,我的JICQ居然会在CSDN的首页上出现。愧的是:我的QQ还有诸多功能尚未完善,却得到广大网友的错爱。这些将是我继续完善我的JICQ的强大动力! 今天发布一些关于JICQ在使用的注意事项、补充说明、与一个更新版本(0.61)。 我的JICQ其实已经被我改动了一下,让它更合理一些。只是由于一些原因,没有及时发布,我现在马上发布到CSDN上。 改动如下: 1. 我已经去掉了JMF,那个东西太大了,本来只有几百K的程序因为它,一下子变成了接近2兆,对广大拨号上网的用户来说,实在太可怕了。 2. 对JICQServer启动命令行做了改动(在注意事项中说明)。 补充说明: 1. 关于跨平台能力:这本来是我用Java写这个ICQ工具的初衷,但由于本人只熟悉Windows平台,对其他系统不了解,虽然编译出了程序,但也不知道怎样来测试,如果有网友给与提供相关信息,我将感激不尽。 虽然我使用的SQL Server2000,但我的数据库结构比较简单,对数据库的查询使用的也是标准SQL——也是为了将来跨平台更容易些,所以可以使用其他数据库系统,我没试过,但我想应该可以。 2. 关于未完善之功能:由于时间、心情等原因,JICQ尚未完善,但毕竟已见雏形,我写这个东西,也只是一个偶然的机会,我现在正在考虑公开其代码。 3. 关于公开代码:我打算将源代码与完整的设计文档共享,以供广大网友学习Java使用。只是,现在时机尚未成熟,我也希望尽快给大家一个惊喜。 4. 关于Bug问题 由于时间较短,许多细节没有完善,不是我没有能力去写,只是现在太忙,没有精力。对于不完善的地方,请大家多多包涵。未完成之功能请参考提示1、2。 现仍寻求提示2中的解决方案。 注意事项: 1. 服务器JICQ数据库,我采用的是MS SQL Server2000,数据库名称为JavaICQ,ODBC数据源名称为JavaICQ。 2. 服务器JICQ启动命令行: JICQServer 用户名与密码分别为数据库系统的有效用户与密码 例:JICQServer sa 123 客户端JICQ需要在JVM或者JDK1.3.1的版本,千万不要在1.4.0的版本上运行,因为我发现在1.4.0以上运行Swing界面不好用。 提示1:未完成之功能列表(不是我不想写,只是没时间)。 1. 不支持“黑名单”功能。 2. 添加好友时,不向对方反馈消息,不提供身份校验。 3. 离线消息收发。 4. 聊天记录的管理。 5. 个人信息的管理等。 提示2:寻找解决方案 1. 服务器JICQ的管理功能,比如系统管理员的日常维护、信息发布等功能。 2. 消息的加密措施,防止非法用户的恶意破解。 3. 客户端JICQ的本地聊天记录文件管理,希望能够找到安全性较高,效率也比较高的库管理方式。
JICQ――Java即时通讯工具――――供广大网友赏析 (0.61更新与补充说明版本说明)近来忽闻,我的JICQ在CSDN上得到发布,惊喜之余,深表惭愧。喜的是:真没想到,我的JICQ居然会在CSDN的首页上出现。愧的是:我的QQ还有诸多功能尚未完善,却得到广大网友的错爱。这些将是我继续完善我的JICQ的强大动力!今天发布一些关于JICQ在使用的注意事项、补充说明、与一个更新版本(0.61)。我的JICQ其实已经被我改动了一下,让它更合理一些。只是由于一些原因,没有及时发布,我现在马上发布到CSDN上。改动如下:1. 我已经去掉了JMF,那个东西太大了,本来只有几百K的程序因为它,一下子变成了接近2兆,对广大拨号上网的用户来说,实在太可怕了。2. 对JICQServer启动命令行做了改动(在注意事项中说明)。补充说明:1. 关于跨平台能力:这本来是我用Java写这个ICQ工具的初衷,但由于本人只熟悉Windows平台,对其他系统不了解,虽然编译出了程序,但也不知道怎样来测试,如果有网友给与提供相关信息,我将感激不尽。虽然我使用的SQL Server2000,但我的数据库结构比较简单,对数据库的查询使用的也是标准SQL――也是为了将来跨平台更容易些,所以可以使用其他数据库系统,我没试过,但我想应该可以。2. 关于未完善之功能:由于时间、心情等原因,JICQ尚未完善,但毕竟已见雏形,我写这个东西,也只是一个偶然的机会,我现在正在考虑公开其代码。3. 关于公开代码:我打算将源代码与完整的设计文档共享,以供广大网友学习Java使用。只是,现在时机尚未成熟,我也希望尽快给大家一个惊喜。4. 关于Bug问题由于时间较短,许多细节没有完善,不是我没有能力去写,只是现在太忙,没有精力。对于不完善的地方,请大家多多包涵。未完成之功能请参考提示1、2。现仍寻求提示2中的解决方案。注意事项:1. 服务器JICQ数据库,我采用的是MS SQL Server2000,数据库名称为JavaICQ,ODBC数据源名称为JavaICQ。2. 服务器JICQ启动命令行:JICQServer <用户名> <密码>用户名与密码分别为数据库系统的有效用户与密码例:JICQServer sa 123客户端JICQ需要在JVM或者JDK1.3.1的版本,千万不要在1.4.0的版本上运行,因为我发现在1.4.0以上运行Swing界面不好用。提示1:未完成之功能列表(不是我不想写,只是没时间)。1. 不支持“黑名单”功能。2. 添加好友时,不向对方反馈消息,不提供身份校验。3. 离线消息收发。4. 聊天记录的管理。5. 个人信息的管理等。提示2:寻找解决方案1. 服务器JICQ的管理功能,比如系统管理员的日常维护、信息发布等功能。2. 消息的加密措施,防止非法用户的恶意破解。3. 客户端JICQ的本地聊天记录文件管理,希望能够找到安全性较高,效率也比较高的库管理方式。Snowing Ximen2003-7-29SnowingXimen@163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值