JAVA网络编程入门的两个demo(TCP+UDP)

来源:互联网 发布:unity3d 模型合并插件 编辑:程序博客网 时间:2024/06/08 16:07

TCP服务器端

package org.bruce.basic;import java.io.DataInputStream;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;public class TestClient {public static void main(String[] args) {Socket s = null;try {s = new Socket("127.0.0.1", 8888);DataInputStream dis = new DataInputStream(s.getInputStream());System.out.println(dis.readUTF());dis.close();s.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

TCP客户端


package org.bruce.basic;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class TestServer {public static void main(String[] args) {ServerSocket ss = null;try {ss = new ServerSocket(9999);} catch (IOException e) {e.printStackTrace();}try {while(true) {Socket s = ss.accept();System.out.println("a client connect!");DataOutputStream dos = new DataOutputStream(s.getOutputStream());dos.writeUTF("IPAddress = " + s.getInetAddress() + "Port = " + s.getPort());dos.close();s.close();}} catch (IOException e) {e.printStackTrace();}}}

UDP服务器端

package org.bruce.basic;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException;//UDP传输是一种无连接的数据传输方式,相较于TCP传输,它也是有它存在的道理的public class UDPServer {public static void main(String[] args) {//以 "字节数组" 的形式开辟一块内存用于缓存接收到的UDP数据包byte[] buffer = new byte[1024];//虽然开辟的缓冲内存大小为1024字节,但也可以设置一个小于该值的缓存空间接收数据包DatagramPacket dp = new DatagramPacket(buffer, buffer.length);DatagramSocket ds = null;try {//监听在UDP 9999 端口ds = new DatagramSocket(9999);} catch (SocketException e) {e.printStackTrace();}while(true) {try {//receive() 方法是一个阻塞性方法!ds.receive(dp);} catch (IOException e) {e.printStackTrace();}//从下一行代码中可以学习到一种用字节数组构造字符串对象的方法System.out.println(new String(buffer, 0, dp.getLength()));}}}

UDP客户端

package org.bruce.basic;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;import java.net.SocketException;public class UDPClient {public static void main(String[] args) {//先将 "Hello!" 封装成一个字符串对象,在调用其 getBytes() 方法将其转换成字节数组//转换成字节数组是为了方便传输byte[] buffer = (new String("Hello!")).getBytes();DatagramPacket dp = null;try {//将要发送的数据、要发送到什么地址设置好并打成一个 DatagramPacket 包dp = new DatagramPacket(buffer, buffer.length, new InetSocketAddress("127.0.0.1", 9999));} catch (SocketException e) {e.printStackTrace();}DatagramSocket ds = null;try {//new 一个DatagramSocket对象(即打开一个UDP端口准备从此处发出数据包)ds = new DatagramSocket(9998);ds.send(dp);ds.close();} catch (SocketException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}