
基于TCP协议的Socket编程.doc
7页Java语言程序设计实验报告实验!实验题目:基于TCP协议的Socket编程指导老师:贺玉珍专业班级:计算机科学与技术系网络工程方向1002班 姓 名:任华瑞(2010100241)2013年5月10曰实验类型验证性实验室软件实验室三一、 实验目的:1. 掌握Java中的有关网络编程的相关类2. 练习使用这些类进行基于TCP协议的Socket网络编程二、 实验内容:分别编写一个客户端程序和一个服务端程序,两个程序能够实现通讯三、实验代码:1.客户端界面代码(ClientFrame. java):import java, awt- import java. net. *; import java. awt. event•氺;public class ClientFrame { private Frame f; private TextField tf; private Button but; private TextArea ta;ClientFrame () {init0 ;public TextArea getTextAreaO { return this, ta;public void init () {f = new Frame (〃客户端"); f. setBounds(300, 100, 400, 300); f.setLayout(new FlowLayout()); tf = new TextField(40);but = new Button ("发送z/);ta = new TextArea (25, 50);f. add (tf);f. add (but);f. add (ta);myEvent ();f- setVisible(true);private void myEvent() {f. addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvcnt c) {System, exit (0);}});but. addActionListcncr(now ActionListcncr () {public void actionPerformed(ActionEvent c) {//ta. setText (tf. getText ());try {DatagramSocket ds 二 new DatagramSockct ();byte[] buf = tf. getText (). getBytes();DatagramPacket dp = new DatagramPacket (buf, buf. length,InetAddress. getByName(〃127. 0. 0. 1〃),10001); ds. send (dp);ta. append ("客广端说::〃+tf. getText ()+"\r\rT); tf. setText ;} catch (Exception ex) { ex. toStringO ;} finally {// ds. closeO ;});} 2.服务端界面代码(ServerFrame. java):import java, net- DatagramPacket; import java. net. DatagramSocket; import java. net. SocketException;public class ServerFrame { private Frame f; private TextField tf; private Button but;private TcxtArca ta;private DatagramSocket dsl;ServerFrameO {init ();}public TextArea getTextAreaO { return this, ta;}public TcxtField getTextFieldO { return this, tf;public void init () {f = new Frame (〃服务端"); f.setBounds(300, 100, 400, 300); f- setLayout(new FlowLayout()); tf = new TextField(40);but = new Button C发送");ta = new TextArea(25, 50);f. add(tf);f. add (but);f. add (ta);myEvent ();f.setVisible (true);private void myEvent() {f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System, exit (0);}});but. addActionListener(new ActionListener () { public void actionPcrformcd(ActionEvcnt e)try {dsl = new DatagramSocket();byte[] buf 1 = tf. getText (). getBytcs();DatagramPacket dpi = new DatagramPacket(buf1,buf1. length, InetAddress. getByNameCl27. 0. 0. 1"), 10002);dsl. send (dpi);ta. append (〃服务端说::〃+tf. getText () +〃\r\n〃);tf. setText (〃〃);} catch (Exception ex) { ex. toStringO ;});}}3. 服务端代码(UdpRece2 . java):import java. net. *;public class UdpRece2 {public static void main(String[] args) throws Exception { final ServerFrame frame = new ServerFrameO; new Thread(new Runnable () {@0verri depublic void run() {// TODO Auto-generated method stub try {DatagramSocket ds = new DatagramSocket(10001); while (true) {byte[] buf = new byte[1024];DatagramPacket dp 二 new DatagramPacket (buf,buf. length);ds. receive (dp);String ip = dp. gctAddrcss(). gctHostAddrcss (); String data = new String (dp. gctDataO, 0,dp• getLengthO);frame. getTextAreaO. append (〃客户端好友说:"+data+〃\r\n〃);}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace ();}) • start ();4. 客户端代码(UdpSend2 • java):import .*;import java. net. SocketException;public class UdpSend2 {public static void main(String[] args) throws Exception {final ClientFrame frame = new ClientErame();new Thread (new Runnable() {@0verri depublic void run() {// TODO Auto-generated method stub try {DatagramSocket dsl = new DatagramSocket (10002); while (true) {byte[] bufl = new byte[1024];DatagramPackct dpi = now DatagramPackot (bufl,bufl. length);dsl. receive (dpi);String ip 二 dpi. gctAddrcss(). getHostAddrcss(); String data = new String(dpl. gctDataO, 0,dpk getLengthO);frame. getTextAreaO. append(〃服务端好友说:"+data+〃\r\n〃);}} catch (Exception e) {// TODO Auto-generated catch block e. printStackTrace ();})• start ();Ui运行结果:1、运行UdSend2. java,出现的结果为:运行UdpRece2. java,出现的结果为r@客户端 L:□回 泛 1 巴?涮马吃 7D厅1去的 仰还下好亲识那识::友::友囊综户翼劳 客服五、实验总结:在这次实验中,我对Socket编程有了进一步的了解和掌握了。
但是在实验中,我发现 向己在有些地方还是不太熟悉,希望自己在平时多加的练习和掌握。












