基于UDP的多人聊天系统源代码_第1页
基于UDP的多人聊天系统源代码_第2页
基于UDP的多人聊天系统源代码_第3页
基于UDP的多人聊天系统源代码_第4页
基于UDP的多人聊天系统源代码_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于UDP的多人聊天系统只需把两个客户段代码与一个服务器代码导入就可以了,记得要把服务器ip:7(也可以自己在服务器程序中改一下),每个客户端需要设置一下ip,比如A客户端:8,B客户端:8,A客户端向B客户端通讯时,“请输入对方ip”,这项改为8,就可以了。客户端源代码程序:ChatFram.javapackageChatFrame_01;import.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.lang.*;importjava.awt.color.*;importjavax.swing.JOptionPane;publicclassChatFrameextendsJFrame{ JPanelcontentPane; JLabellabel1=newJLabel();//发送消息 JLabellabel2=newJLabel();//输入ip Labellabel3=newLabel();//输入端口标签 Labellabel4=newLabel();//输出端口标签 JTextFieldtextField1=newJTextField();//发送消息 JTextFieldtextField2=newJTextField();//输入ip JTextFieldtextField3=newJTextField();//获得输入端口 JTextFieldtextField4=newJTextField();//获得输出端口 JButtonbutton1=newJButton("发送");//发送消息 TextAreatextArea1=newTextArea(); JOptionPanejopane=newJOptionPane(); DatagramPacketsendpacket,receivepacket;//声明发送和接收数据包 DatagramSocketsendsocket,receivesocket;//声明发送和接收DatagramSocket publicChatFrame(){ enableEvents(AWTEvent.WINDOW_EVENT_MASK); try{ toInit(); }catch(Exceptione){ e.printStackTrace(); } } privatevoidtoInit()throwsException{ contentPane=(JPanel)this.getContentPane(); label1.setText("发送信息:"); label1.setBounds(newRectangle(13,100,60,21)); contentPane.setLayout(null); contentPane.setBackground(Color.pink); this.setSize(newDimension(363,502)); this.setTitle("多人聊天室"); label2.setText("输入对方IP地址:"); label2.setBounds(newRectangle(12,19,109,23)); label3.setText("输入端口:"); label3.setBounds(newRectangle(12,58,55,22)); label4.setText("输出端口:"); label4.setBounds(newRectangle(180,58,55,22)); textField3.setText("3000"); textField4.setText("3001"); button1.setBounds(newRectangle(280,100,59,21)); button1.addActionListener(newjava.awt.event.ActionListener(){ publicvoidactionPerformed(ActionEvente){ button1_actionPerformed(e); } }); textField1.addKeyListener(newKeyAdapter(){ publicvoidkeyPressed(KeyEvente){ if(e.getKeyCode()==KeyEvent.VK_ENTER){ Stringstr=textField2.getText(); Stringstr1=textField1.getText(); if(pareTo("")!=0&&!"".equals(str1)){ try{ textArea1.append("\nto"+textField2.getText() +":"+"3000"+"say:" +textField1.getText()); Strings=textField1.getText(); bytedata[]=s.getBytes("UTF-8"); sendpacket=newDatagramPacket( data, data.length, InetAddress.getByName("7"), 6666); sendsocket.send(sendpacket); }catch(IOExceptionexc){ exc.printStackTrace(); } textField1.setText(""); } } } }); textField4.setBounds(newRectangle(240,58,90,22)); textField3.setBounds(newRectangle(70,58,90,22)); textField2.setBounds(newRectangle(123,20,120,19)); textField1.setBounds(newRectangle(76,100,190,19)); textArea1.setBounds(newRectangle(11,140,333,315)); textArea1.setEditable(false); textArea1.setBackground(Color.white); contentPane.add(label4,null); contentPane.add(label3,null); contentPane.add(label2,null); contentPane.add(label1,null); contentPane.add(textField1,null); contentPane.add(textField2,null); contentPane.add(textField3,null); contentPane.add(textField4,null); contentPane.add(textArea1,null); contentPane.add(button1,null); this.setVisible(true); bind(); } protectedvoidprocessWindowEvent(WindowEvente){ cessWindowEvent(e); if(e.getID()==WindowEvent.WINDOW_CLOSING){ System.exit(0); } } publicvoidwaitforpackets(){//检测并接受对方发来的消息 while(true){ try{ byte[]array=newbyte[100]; receivepacket=newDatagramPacket(array,array.length); receivesocket.receive(receivepacket);//接收 textArea1.append("\nfrom"+receivepacket.getAddress()+":" +receivepacket.getPort()+"get:"); Stringreceived=newString(receivepacket.getData(),0, receivepacket.getLength(),"UTF-8"); textArea1.append(received); }catch(IOExceptionse){ se.printStackTrace(); } } } voidbind(){//和对方建立连 try{ sendsocket=newDatagramSocket(3000); receivesocket=newDatagramSocket(3333); }catch(Exceptione){ } } voidbutton1_actionPerformed(ActionEvente){//发送消息到对方 Stringstr=textField2.getText(); Stringstr1=textField1.getText(); if(pareTo("")!=0&&!"".equals(str1)){ try{ textArea1.append("\nto"+textField2.getText()+":"+"3000" +"say:"+textField1.getText()); Strings=textField2.getText()+"|"+textField1.getText(); bytedata[]=s.getBytes("UTF-8"); sendpacket=newDatagramPacket(data,data.length,InetAddress .getByName("7"),6666); sendsocket.send(sendpacket); }catch(IOExceptionexc){ exc.printStackTrace(); } textField1.setText(""); } }}ChatApp.javapackageChatFrame_01;importjava.io.*;importjavax.swing.UIManager;importjava.awt.*;publicclassChatApp{ booleanpackFrame=false; ChatApp(){ ChatFrameframe=newChatFrame(); if(packFrame){ frame.pack(); }else{ frame.validate(); } //放置窗体在屏幕中央 DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize(); DimensionframeSize=frame.getSize(); if(frameSize.height>screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width>screenSize.width){ frameSize.width=screenSize.width; } frame.setLocation((screenSize.width-frameSize.width)/2, (screenSize.height-frameSize.height)/2); frame.setVisible(true); frame.waitforpackets(); } publicstaticvoidmain(String[]args){ newChatApp(); }}服务器端:Server.javapackageChatFrame_01;import.DatagramPacket;import.DatagramSocket;import.InetAddress;import.Socket;importjava.util.*;publicclassServer{ Listips=newArrayList(); DatagramSocketsocket; DatagramPacketpacket; DatagramSocketssocket; DatagramPacketspacket; publicServer()throwsException{ socket=newDatagramSocket(6666); ssocket=newDatagramSocket(8888); } publicvoidlisten()throwsException{ byte[]array=newbyte[100]; packet=newDatagramPacket(array,array.length); socket.receive(packet); byte[]data=packet.getData(); Stringreceived=newString(data,0,data.length,"UTF-8"); System.out.println(received); String[]ss=received.split("\\|"); Stringip=ss[0]; byte[]dt=ss[1].getBytes("UTF-8"); spacket=newDatagramPacket(dt,dt.length,InetAddress.getByName(ip),3333); ssocket.send(spacket); } publicstaticvoidmain(String[]args)throwsException{ Servers=newServer(); while(true){ s.listen(); } }}

论大学生写作能力写作能力是对自己所积累的信息进行选择、提取、加工、改造并将之形成为书面文字的能力。积累是写作的基础,积累越厚实,写作就越有基础,文章就能根深叶茂开奇葩。没有积累,胸无点墨,怎么也不会写出作文来的。写作能力是每个大学生必须具备的能力。从目前高校整体情况上看,大学生的写作能力较为欠缺。一、大学生应用文写作能力的定义那么,大学生的写作能力究竟是指什么呢?叶圣陶先生曾经说过,“大学毕业生不一定能写小说诗歌,但是一定要写工作和生活中实用的文章,而且非写得既通顺又扎实不可。”对于大学生的写作能力应包含什么,可能有多种理解,但从叶圣陶先生的谈话中,我认为:大学生写作能力应包括应用写作能力和文学写作能力,而前者是必须的,后者是“不一定”要具备,能具备则更好。众所周知,对于大学生来说,是要写毕业论文的,我认为写作论文的能力可以包含在应用写作能力之中。大学生写作能力的体现,也往往是在撰写毕业论文中集中体现出来的。本科毕业论文无论是对于学生个人还是对于院系和学校来说,都是十分重要的。如何提高本科毕业论文的质量和水平,就成为教育行政部门和高校都很重视的一个重要课题。如何提高大学生的写作能力的问题必须得到社会的广泛关注,并且提出对策去实施解决。二、造成大学生应用文写作困境的原因:(一)大学写作课开设结构不合理。就目前中国多数高校的学科设置来看,除了中文专业会系统开设写作的系列课程外,其他专业的学生都只开设了普及性的《大学语文》课。学生写作能力的提高是一项艰巨复杂的任务,而我们的课程设置仅把这一任务交给了大学语文教师,可大学语文教师既要在有限课时时间内普及相关经典名著知识,又要适度提高学生的鉴赏能力,且要教会学生写作规律并提高写作能力,任务之重实难完成。(二)对实用写作的普遍性不重视。“大学语文”教育已经被严重地“边缘化”。目前对中国语文的态度淡漠,而是呈现出全民学英语的大好势头。中小学如此,大学更是如此。对我们的母语中国语文,在大学反而被漠视,没有相关的课程的设置,没有系统的学习实践训练。这其实是国人的一种偏见。应用写作有它自身的规律和方法。一个人学问很大,会写小说、诗歌、戏剧等,但如果不晓得应用文写作的特点和方法,他就写不好应用文。(三)部分大学生学习态度不端正。很多非中文专业的大学生对写作的学习和训练都只是集中在《大学语文》这一门课上,大部分学生只愿意被动地接受大学语文老师所讲授的文学经典故事,而对于需要学生动手动脑去写的作文,却是尽可能应付差事,这样势必不能让大学生的写作水平有所提高。(四)教师的实践性教学不强。学生写作能力的提高是一项艰巨复杂的任务,但在教学中有不少教师过多注重理论知识,实践性教学环节却往往被忽视。理论讲了一大堆,但是实践却几乎没有,训练也少得可怜。阅读与写作都需要很强的实践操作,学习理论固然必不可少,但是阅读方法和写作技巧的掌握才是最重要的。由于以上的原因,我们的大学生的写作水平着实令人堪忧,那么如何走出这一困境,笔者提出一些建议,希望能对大学生写作水平的提高有所帮助。三、提高大学生应用写作能力的对策(一)把《应用写作》课设置为大学生的必修课。在中国的每一所大学,《应用写作》应该成为大学生的必修课。因为在这个被某些人形容为实用主义、功利主义甚嚣尘上的时代,也是个人生存竞争最激烈的时代,人们比任何时代都更需要学会写作实用性的文章,比如职场竞争中的求职信,生活中的财经文书、法律文书等,以提高个人的生存竞争能力。(二)端正大学生的学习态度。首先,要让大学生充分认识到实用写作课的重要性,这门课关乎到他人生的每一个方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论