java中TCP与UDP实例

最近要用到TCP与UDP通信,故学习一下。

1.TCP通信

a.TCPServer

import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
	// 建立ServerSocket,并设置其端口号
	private ServerSocket ss;

	public static final int port = 8962;

	public TCPServer() {

		try {

			ss = new ServerSocket(port);

		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	public void setConnection() throws IOException {
		// 建立服务器端的Socket
		Socket s;
		OutputStream os;
		try { // ServerSocke.accept()t返回一个Socket对象

			s = ss.accept();
			os = s.getOutputStream();
			os.write("hello".getBytes());
			os.close();
			s.close();
		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	public static void main(String[] args) throws IOException {

		TCPServer ms = new TCPServer();
		ms.setConnection();

	}

}

b.TCPClient

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;

public class TCPClient {
	public static final String IP = "192.168.0.157";
	public static final int port = 8962;
	private Socket s;

	public TCPClient() throws IOException {
		try {
			s = new Socket(IP, port);

		} catch (IOException e) {

			e.printStackTrace();
		}
	}

	public void setConnection() throws IOException {

		InputStream is;

		try {
			is = s.getInputStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(is));

			System.out.println(br.readLine());

		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	public static void main(String args[]) throws IOException {

		TCPClient mc = new TCPClient();
		mc.setConnection();

	}

}

2.UDP通信

a.UDPServer

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {
	public static void main(String[] rrgs) throws IOException {
		DatagramSocket socket = new DatagramSocket(14567);
		while (true) {
			
			byte data[] = new byte[1024];
			// 创建一个空的DatagramPacket对象
			DatagramPacket packet = new DatagramPacket(data, data.length);
			// 使用receive方法接收客户端所发送的数据,
			// 如果客户端没有发送数据,该进程就停滞在这里
			socket.receive(packet);
			String result = new String(packet.getData(), packet.getOffset(),
					packet.getLength());
			System.out.println("result--->" + result);
		}

	}

}

b.UDPClient

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPClient {
	public static void main(String[] args) {
		try {
			// 首先创建一个DatagramSocket对象
			DatagramSocket socket = new DatagramSocket();
			// 创建一个InetAddree
			InetAddress serverAddress = InetAddress.getByName("192.168.0.157");
			String str = "hello"; // 这是要传输的数据
			byte data[] = str.getBytes(); // 把传输内容分解成字节
			// 创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、地址,以及端口号
			DatagramPacket packet = new DatagramPacket(data, data.length,
					serverAddress, 14567);
			// 调用socket对象的send方法,发送数据
			socket.send(packet);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值