网络聊天客户服务程序Word下载.docx
- 文档编号:16153014
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:21
- 大小:102.28KB
网络聊天客户服务程序Word下载.docx
《网络聊天客户服务程序Word下载.docx》由会员分享,可在线阅读,更多相关《网络聊天客户服务程序Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
5.组播编程14
5.1.实验要求14
5.2.程序修改的功能14
5.3.程序修改以及代码:
5.4.运行结果:
17
6.心得体会18
1、引言
网络编程简单的理解就是两台计算机相互通讯数据,通过使用套接字来达到进程间通信目的编程就是网络编程。
网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。
中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理。
网络通讯程序设计这门课程采用Java语言进行程序编写,Java突出的优点是通过预定义的库可以实现很强的功能,而不需要程序员做很多的事情。
对于Java而言,这些Socket的Api存在与这个包里面,因此只要导入这个包就可以准备网络编程了,Socket、UDP、组播、协议就是网络编程技术的一部分。
这门课程的课程设计就从socket、UDP、组播几个方面分别进行编写一些简单的例子。
2、成员分工
学生姓名
负责任务
朱红印
建立面向SOCKET编程的JAVA工程,用于服务器系统。
责端ChatServer和Server代码的编写。
李红旭
建立面向SOCKET编程的JAVA工程,用于客户端系统。
责端ChatClient代码的编写。
程相品
建立两个独立的基于UDP编程的JAVA工程,用于服务器和客户端系统。
建立UDP_A的JAVA类,并能正确运行且能实现数据报通信。
李可磊
建立UDP_B的VA类,并能正确运行且能实现数据报通信。
于振东
建立独立的基于组播编程的JAVA工程,用于客户端系统。
在工程中建立相关的JAVA类,拷贝代码后调试运行,使其能正确运行且能实现组播通信;
3、面向socket编程
2.1.socket设计要求
①建立两个独立的面向SOCKET编程的JAVA工程,用于服务器和客户端系统;
②建立SOCKET的JAVA类,并能正确运行且能实现SOCKET通信;
③对JAVA类的功能进行拓广,使SOCKET用于某一具体的应用。
2.2.程序修改的功能
1实现界面图形化:
客户端实现界面图形化,服务端则没有界面图形化。
2实现客户端能够即时聊天功能:
当打开server端后,运行两个客户端,便可进行即时聊天,聊天记录没有保存,没有显示IP,只能进行简单的聊天。
每当一个客户端连接上时,服务端会显示“aclientconnected!
”,当每一个客户端退出时,便会显示“clientclosed!
”
2.3.1服务端—ChatServer的代码:
importjava.io.*;
import.*;
importjava.util.*;
publicclassChatServer{
booleanstarted=false;
ServerSocketss=null;
List<
Client>
clients=newArrayList<
();
publicstaticvoidmain(String[]args){
newChatServer().start();
}
publicvoidstart(){
try{
ss=newServerSocket(8888);
started=true;
}catch(BindExceptione){
System.out.println("
端口使用中...."
);
请关掉相关程序并重新运行服务器!
"
System.exit(0);
}catch(IOExceptione){
e.printStackTrace();
}
while(started){
Sockets=ss.accept();
Clientc=newClient(s);
System.out.println("
aclientconnected!
newThread(c).start();
clients.add(c);
}
}finally{
try{
ss.close();
}catch(IOExceptione){
e.printStackTrace();
classClientimplementsRunnable{
privateSockets;
privateDataInputStreamdis=null;
privateDataOutputStreamdos=null;
privatebooleanbConnected=false;
publicClient(Sockets){
this.s=s;
dis=newDataInputStream(s.getInputStream());
dos=newDataOutputStream(s.getOutputStream());
bConnected=true;
publicvoidsend(Stringstr){
dos.writeUTF(str);
clients.remove(this);
System.out.println("
对方退出了!
我从List里面去掉了!
publicvoidrun(){
while(bConnected){
Stringstr=dis.readUTF();
System.out.println(str);
for(inti=0;
i<
clients.size();
i++){
Clientc=clients.get(i);
c.send(str);
}
}
}catch(EOFExceptione){
Clientclosed!
}finally{
try{
if(dis!
=null)dis.close();
if(dos!
=null)dos.close();
if(s!
=null){
s.close();
}catch(IOExceptione1){
e1.printStackTrace();
}
2.3.2客户端—ChatClient代码:
importjava.awt.*;
importjava.awt.event.*;
publicclassChatClientextendsFrame{
Sockets=null;
DataOutputStreamdos=null;
DataInputStreamdis=null;
privatebooleanbConnected=false;
TextFieldtfTxt=newTextField();
TextAreataContent=newTextArea();
ThreadtRecv=newThread(newRecvThread());
newChatClient().launchFrame();
publicvoidlaunchFrame(){
setLocation(400,300);
this.setSize(300,300);
add(tfTxt,BorderLayout.SOUTH);
add(taContent,BorderLayout.NORTH);
pack();
this.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEventarg0){
disconnect();
System.exit(0);
});
tfTxt.addActionListener(newTFListener());
setVisible(true);
connect();
tRecv.start();
publicvoidconnect(){
s=newSocket("
127.0.0.1"
8888);
dos=newDataOutputStream(s.getOutputStream());
dis=newDataInputStream(s.getInputStream());
connected!
bConnected=true;
}catch(UnknownHostExceptione){
publicvoiddisconnect(){
dos.close();
dis.close();
s.close();
privateclassTFListenerimplementsActionListener{
publicvoidac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 聊天 客户 服务 程序