java网络通信技术之简单聊天小程序
程序员文章站
2024-02-22 13:43:10
本文实例为大家分享了java实现简单聊天小程序的具体代码,供大家参考,具体内容如下
再学习完java的通信技术后,做了一个简单的窗体聊天程序。程序非常简单,主要目的是...
本文实例为大家分享了java实现简单聊天小程序的具体代码,供大家参考,具体内容如下
再学习完java的通信技术后,做了一个简单的窗体聊天程序。程序非常简单,主要目的是当练习巩固自己所学的东西,在这里写出来记录以下。下面直接上代码。
首先是服务端代码:
package chattwopackage; import java.io.*; import java.net.*; public class chattwoserver { public chattwoserver(int port,string name) throws ioexception { serversocket server=new serversocket(port);//创建seversocket对象,提供tcp连接服务。指定端口port,等待tcp连接。 system.out.print("正在等待连接,请勿操作!"); socket client=server.accept();//创建socket对象,它等待接收客户端的连接。 new chattwoclient(name,client);//实现图形界面。 server.close(); } public static void main(string[] args) throws ioexception { new chattwoserver(2001,"sq"); } }
然后是客户端的代码:
package chattwopackage; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*; public class chattwoclient extends jframe implements actionlistener { private string name; private jtextarea text_re; private jtextfield text_se; private printwriter cout; private jbutton buttons[]; public chattwoclient(string name,socket socket) throws ioexception { super("我:"+name+inetaddress.getlocalhost().gethostaddress()+":"+socket.getlocalport()); this.setbounds(320, 240, 400, 240); this.text_re=new jtextarea(); this.text_re.seteditable(false); this.getcontentpane().add(new jscrollpane(this.text_re)); jtoolbar toolbar=new jtoolbar(); this.getcontentpane().add(toolbar,"south"); toolbar.add(this.text_se=new jtextfield(30)); buttons=new jbutton[2]; buttons[0]=new jbutton("发送"); buttons[1]=new jbutton("下线"); toolbar.add(buttons[0]); toolbar.add(buttons[1]); buttons[0].addactionlistener(this); buttons[1].addactionlistener(this);//给按钮添加事件监听,委托当前对象处理 this.setvisible(true); this.name=name; this.cout=new printwriter(socket.getoutputstream(),true);//获得socket输出流 this.cout.println(name); bufferedreader br=new bufferedreader(new inputstreamreader(socket.getinputstream())); //将socket的字节输入流转换为字符流,默认gbk字符集,再创建缓冲字符输入流 string line="连接"+br.readline()+"成功"; while(line!=null&&!line.endswith("bye")) { text_re.append(line+"\r\n"); line=br.readline(); }//读取对方发送的内容并显示,直到内容为为空或对方下线 br.close(); this.cout.close(); socket.close(); buttons[0].setenabled(false); buttons[1].setenabled(false); } public chattwoclient(string name,string host,int port) throws ioexception { this(name,new socket(host,port));//调用另一个构造方法 } public void actionperformed(actionevent ev) { if(ev.getactioncommand().equals("发送")) { this.cout.println(name+":"+text_se.gettext()); text_re.append("我:"+text_se.gettext()+"\n"); text_se.settext(""); }//按下发送按钮后,将内容发出,并更新自己聊天框的内容 if(ev.getactioncommand().equals("下线")) { text_re.append("你已下线\n"); this.cout.println(name+"离线\n"+"bye\n"); buttons[0].setenabled(false); buttons[1].setenabled(false); }//下线按钮按下后,发送bye作为下线标记 } public static void main(string[] args) throws ioexception { new chattwoclient("mxl","127.0.0.1",2001); //ip地址和端口 } }
运行效果:
说明:
1.两台计算机一台作为服务端,作为服务端的计算机需要有两个代码。首先运行服务端的代码,等待客户端机器连接,客户端运行客户端代码后,提示连接成功。就可以发送信息了。
2.运行代码前需要将ip地址改为自己计算机当前的ip地址(modem、isdn、adsl、有线宽频、小区宽频等方式上网的计算机,每次上网所分配到的ip地址都不相同,这称为动态ip地址)。如果要用一台计算机充当客户端和服务端,就将ip地址写为:127.0.0.1(127.0.0.1是回送地址,指本地机,一般用来测试使用)。先运行服务端代码,再运行客户端代码即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 如何选择老网站老域名快速做到权重6以上!
下一篇: Hibernate 的原理与配置