【Java精品源码栏目提醒】:网学会员为广大网友收集整理了,Java_TcpUdp小例子(非异步) - 电子电信,希望对大家有所帮助!
Java TcpUdp 小例子非异步(含
源码)TCP 通信程序流程图:UDP 通信程序流程图: 运行结果 (IP:192.168.1.102) 作为服务器端的电脑:作为客户端的电脑:(IP:192.168.1.100)源代码:TCPServer.javaimport
java.awt.BorderLayoutimport
java.awt.Buttonimport
java.awt.Fontimport
java.awt.Frameimport
java.awt.GridLayoutimport
java.awt.Panelimport
java.awt.TextAreaimport
java.awt.TextFieldimport
java.awt.event.MouseAdapterimport
java.awt.event.MouseEventimport
java.awt.event.WindowAdapterimport
java.awt.event.WindowEventimport
java.io.DataInputStreamimport
java.io.DataOutputStreamimport
java.io.IOExceptionimport
java.net.ServerSocketimport
java.net.Socketpublic class TCPServer extends Frame private TextArea ta null private TextField tf null private Panel southPanel null private Button btn null private Thread tReader null private Socket sConnect null private boolean keepRunning true TCPServer myFrame null DataInputStream dis null DataOutputStream dos null / 主函数 param args / public static void mainString args new TCPServerquotTCP Server V1.0quot.launchServer8887 public TCPServerString title supertitle setLocation100 150 ta new TextArea addta BorderLayout.CENTER southPanel new Panelnew GridLayout12 tf new TextField btn new ButtonquotSendquot//quot发送数据quot southPanel.addtf southPanel.addbtn addsouthPanel BorderLayout.SOUTH pack myFrame this btn.addMouseListenernew BtnMouseAdapter addWindowListenernew WindowAdapter Override public void windowClosingWindowEvent e super.windowClosinge keepRunning false try if tReader null tReader.join2000 catch InterruptedException e1 e1.printStackTrace myFrame.dispose System.exit0 setVisibletruepublic void launchServerint port ServerSocket ss null try ss new ServerSocketport sConnect ss.accept dos new DataOutputStreamsConnect.getOutputStream dis new DataInputStreamsConnect.getInputStream tReader new Threadnew SocketReader tReader.start ta.appendquot客户端quot sConnect.getInetAddress.toString quot已经连接到此服务器。
nquot catch IOException e e.printStackTrace finally try if ss null ss.close ss null catch IOException e e.printStackTrace private void sendMsg String tem tf.getText if tem null ampamp dos null try dos.writeUTFtem ta.appendquot向 quot sConnect.getInetAddress.toString quot:quot sConnect.getPort quot 发送:quot tem quotnquot catch IOException e e.printStackTrace tf.setTextquotquot private class BtnMouseAdapter extends MouseAdapter Override public void mouseClickedMouseEvent e super.mouseClickede sendMsg private class SocketReader implements Runnable public void run String strRead null while keepRunning try strRead dis.readUTF catch IOException e //e.printStackTrace System.out.printlnquot连接已断开。
quot ta.appendsConnect.getInetAddress.toString quot:quot sConnect.getPort quot 说:quot strRead quotnquot strRead null TCPClient.javaimport
java.awt.BorderLayoutimport
java.awt.Buttonimport
java.awt.Frameimport
java.awt.GridLayoutimport
java.awt.Panelimport
java.awt.TextAreaimport
java.awt.TextFieldimport
java.awt.event.MouseAdapterimport
java.awt.event.MouseEventimport
java.awt.event.WindowAdapterimport
java.awt.event.WindowEventimport
java.io.DataInputStreamimport
java.io.DataOutputStreamimport
java.io.IOExceptionimport
java.net.Socketimport
java.net.UnknownHostExceptionpublic class TCPClient extends Frame private TextArea ta null private TextField tf null private Panel southPanel null private Button btn null private Thread tReader null private Socket sConnect null private boolean keepRunning true TCPClient myFrame null DataInputStream dis null DataOutputStream dos null / 主函数 param args / public static void mainString args // TODO Auto-generated method stub new TCPClientquotTcp Client V1.0quot.launchClientquot192.168.1.102quot 8887public TCPClientString string superstring setLocation100 400 ta new TextArea addta BorderLayout.CENTER southPanel new Panelnew GridLayout1 2 tf new TextField btn new ButtonquotSendquot southPanel.addtf southPanel.addbtn addsouthPanel BorderLayout.SOUTH pack myFrame this btn.addMouseListenernew BtnMouseAdapter addWindowListenernew WindowAdapter Override public void windowClosingWindowEvent e super.windowClosinge keepRunning false try if tReader null tReader.join2000 catch InterruptedException e1 e1.printStackTrace myFrame.dispose System.exit0 setVisibletruepublic void launchClientString ip int port try sConnect new Socketip port dos new DataOutputStreamsConnect.getOutputStream dis new DataInputStreamsConnect.getInputStream tReader new Threadnew SocketReader tReader.start ta.appendquot服务器端quot sConnect.getInetAddress.toString quot已经连接。
nquot catch UnknownHostException e e.printStackTrace catch IOException e e.printStackTrace private void sendMsg String tem tf.getText if tem null ampamp dos null try dos.writeUTFtem ta.appendquot向 quot sConnect.getInetAddress.toString quot:quot sConnect.getPort quot 发送:quot tem quotnquot catch IOException e e.printStackTrace tf.setTextquotquot private class BtnMouseAdapter extends MouseAdapter Override public void mouseClickedMouseEvent e super.mouseClickede sendMsg private class SocketReader implements Runnable public void run String strRead null while keepRunning try strRead dis.readUTF catch IOException e //e.printStackTrace System.out.printlnquot连接已断开。
quot ta.appendsConnect.getInetAddress.toString quot:quot sConnect.getPort quot 说:quot strRead quotnquot strRead null UDPServerimport
java.awt.BorderLayoutimport
java.awt.Buttonimport
java.awt.Frameimport
java.awt.GridLayoutimport
java.awt.Panelimport
java.awt.TextAreaimport
java.awt.TextFieldimport
java.awt.event.MouseAdapterimport
java.awt.event.MouseEventimport
java.awt.event.WindowAdapterimport
java.awt.event.WindowEventimport
java.io.ByteArrayInputStreamimport
java.io.DataInputStreamimport
java.io.DataOutputStreamimport
java.io.IOExceptionimport
java.net.DatagramPacketimport
java.net.DatagramSocketimport
java.net.InetSocketAddressimport
java.net.SocketExceptionpublic class UDPServer extends Frame private TextArea ta null private TextField tf null private Panel southPanel null private Button btn null private Thread tReader null private DatagramSocket sSender null private DatagramSocket sRecver null private boolean keepRunning true private UDPServer myFrame null private DataInputStream dis null private DataOutputStream dos null private String destIp null private int portDest 0 / 主函数 param args / public static void mainString args new UDPServerquotUDP Server V1.0quot.launchServerquot192.168.1.100quot 6665 8888 6666 public void launchServerString destIp int portSend int portDest int portRecv this.destIp destIp this.portDest portDest try sSender new DatagramSocketportSend//IP 地址在数据包中标明 sRecver new DatagramSocketportRecv tReader new Threadnew UDPListener tReader.start catch SocketException e e.printStackTrace ta.appendString.formatquot启动服务器端(发送端口:d 接收端口:d) 准备发送数据到: n s:dnnquot portSendportRecv destIp portDest public UDPServerString title supertitle setLocation100 150 ta new TextArea addta BorderLayout.CENTER southPanel new Panelnew GridLayout12 tf new TextField btn new ButtonquotSendquot//quot发送数据quot southPanel.addtf southPanel.addbtn addsouthPanel BorderLayout.SOUTH pack myFrame this btn.addMouseListenernew BtnMouseAdapter addWindowListenernew WindowAdapter Override public void windowClosingWindowEvent e super.windowClosinge sSender.close sRecver.close keepRunning false try if tReader null tReader.join2000 catch InterruptedException e1 e1.printStackTrace myFrame.dispose System.exit0 setVisibletrue private class BtnMouseAdapter extends MouseAdapter Override public void mouseClickedMouseEvent e super.mouseClickede sendMsg private void sendMsg String tem tf.getText byte bArray tem.getBytes if bArray null ampamp sSender null try DatagramPacket dp new DatagramPacketbArray bArray.length new InetSocketAddressdestIpportDest sSender.senddp ta.appendquotn 向 quot dp.getAddress quot:quot dp.getPort quot发送:quot tem quotnquot catch IOException e e.printStackTrace tf.setTextquotquot bArray null private class UDPListener implements Runnable Override public void run String tem null while keepRunning byte buf new byte256 DatagramPacket dpRecv new DatagramPacketbuf buf.length try sRecver.receivedpRecv tem new StringdpRecv.getData catch IOException e e.printStackTrace ta.appendquotn 从quot dpRecv.getAddress quot:quot sRecver.getLocalPort quot接收到的信息:quot tem tem null UDPClientimport
java.awt.BorderLayoutimport
java.awt.Buttonimport
java.awt.Frameimport
java.awt.GridLayoutimport
java.awt.Panelimport
java.awt.TextAreaimport
java.awt.TextFieldimport
java.awt.event.MouseAdapterimport
java.awt.event.MouseEventimport
java.awt.event.WindowAdapterimport
java.awt.event.WindowEventimport
java.io.ByteArrayInputStreamimport
java.io.DataInputStreamimport
java.io.DataOutputStreamimport
java.io.IOExceptionimport
java.net.DatagramPacketimport
java.net.DatagramSocketimport
java.net.InetSocketAddressimport
java.net.SocketExceptionpublic class UDPClient extends Frame private TextArea ta null private TextField tf null private Panel southPanel null private Button btn null private Thread tReader null private DatagramSocket sSender null private DatagramSocket sRecver null private boolean keepRunning true private UDPClient myFrame null private DataInputStream dis null private DataOutputStream dos null private String destIp null private int portDest 0 / 主函数 param args / public static void mainString args new UDPClientquotUDP Client V1.0quot.launchClientquot192.168.1.102quot 8887 6666 8888 private void launchClientString destIp int portSend int portDest int portRecv this.destIp destIp this.portDest portDest try sSender new DatagramSocketportSend//IP 地址在数据包中标明 sRecver new DatagramSocketportRecv tReader new Threadnew UDPListener tReader.start catch SocketException e e.printStackTrace ta.appendString.formatquot启动客户端(发送端口:d 接收端口:d) 准备发送数据到: n s:dnnquot portSendportRecv destIp portDest public UDPClientString title supertitle setLocation100 400 ta new TextArea addta BorderLayout.CENTER southPanel new Panelnew GridLayout12 tf new TextField btn new ButtonquotSendquot//quot发送数据quot southPanel.addtf southPanel.addbtn addsouthPanel BorderLayout.SOUTH pack myFrame this btn.addMouseListenernew BtnMouseAdapter addWindowListenernew WindowAdapter Override public void windowClosingWindowEvent e super.windowClosinge sSender.close sRecver.close keepRunning false try if tReader null tReader.join2000 catch InterruptedException e1 e1.printStackTrace myFrame.dispose System.exit0 setVisibletrue private class BtnMouseAdapter extends MouseAdapter Override public void mouseClickedMouseEvent e super.mouseClickede sendMsg private void sendMs.
上一篇:
图形用户界面中组件的布局【精品文档
下一篇:
bc80e7a0-d1f2-4595-b21d-01a76798e87a