欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

tio开发udp应用,发100万数据

程序员文章站 2022-04-09 22:26:03
...

1、所有的showcase都始于pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>tio-udp-showcase</artifactId>
	<name>${project.artifactId}</name>

	<parent>
		<groupId>org.t-io</groupId>
		<artifactId>tio-parent</artifactId>
		<version>3.0.1.v20180601-RELEASE</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.t-io</groupId>
			<artifactId>tio-core</artifactId>
		</dependency>

		<!-- slf4j-logback绑定 -->
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-access</artifactId>
		</dependency>


		<!-- redirect apache commons logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
		</dependency>
		<!-- redirect jdk util logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jul-to-slf4j</artifactId>
		</dependency>
		<!-- redirect log4j -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>log4j-over-slf4j</artifactId>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testng</groupId>
			<artifactId>testng</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

        2、在服务器端定义一个UdpHandler

package org.tio.showcase.udp.server;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tio.core.Node;
import org.tio.core.udp.UdpPacket;
import org.tio.core.udp.intf.UdpHandler;

/**
 * @author tanyaowu
 */
public class ShowcaseUdpHandler implements UdpHandler {

	private static Logger log = LoggerFactory.getLogger(ShowcaseUdpHandler.class);

	public ShowcaseUdpHandler() {
	}

	@Override
	public void handler(UdpPacket udpPacket, DatagramSocket datagramSocket) {
		byte[] data = udpPacket.getData();
		String msg = new String(data);
		Node remote = udpPacket.getRemote();

		log.info("收到来自{}的消息:【{}】", remote, msg);
		DatagramPacket datagramPacket = new DatagramPacket(data, data.length, new InetSocketAddress(remote.getIp(), remote.getPort()));
		try {
			datagramSocket.send(datagramPacket);
		} catch (Throwable e) {
			log.error(e.toString(), e);
		}
	}
}

        3、服务器启动类

package org.tio.showcase.udp.server;

import java.net.SocketException;

import org.tio.core.udp.UdpServer;
import org.tio.core.udp.UdpServerConf;

/**
 * @author tanyaowu
 *
 */
public class ShowcaseUdpServerStarter {
	/**
	 * @param args
	 * @throws SocketException 
	 */
	public static void main(String[] args) throws SocketException {
		ShowcaseUdpHandler fpmsUdpHandler = new ShowcaseUdpHandler();
		UdpServerConf udpServerConf = new UdpServerConf(3000, fpmsUdpHandler, 5000);
		UdpServer udpServer = new UdpServer(udpServerConf);
		udpServer.start();
	}
}

        4、写个客户端启动类,顺便发上100万条消息

package org.tio.showcase.udp.client;

import org.tio.core.udp.UdpClient;
import org.tio.core.udp.UdpClientConf;

/**
 * @author tanyaowu
 */
public class UdpClientStarter {
	/**
	 * @param args
	 * @author tanyaowu
	 */
	public static void main(String[] args) {
		UdpClientConf udpClientConf = new UdpClientConf("127.0.0.1", 3000, 5000);
		UdpClient udpClient = new UdpClient(udpClientConf);
		udpClient.start();

		long start = System.currentTimeMillis();
		for (int i = 0; i < 1000000; i++) {
			String str = i + "、" + "用tio开发udp,有点意思";
			udpClient.send(str.getBytes());
		}
		long end = System.currentTimeMillis();
		long iv = end - start;
		System.out.println("耗时:" + iv + "ms");
	}
}

        5、启动服务器和客户端

        运行:org.tio.showcase.udp.server.ShowcaseUdpServerStarter.main(String[])

        运行:org.tio.showcase.udp.client.UdpClientStarter.main(String[])

        6、看一下日志

... ...
2018-06-04 13:53:05,682 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999962、用tio开发udp,有点意思】
2018-06-04 13:53:05,682 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999963、用tio开发udp,有点意思】
2018-06-04 13:53:05,682 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999964、用tio开发udp,有点意思】
2018-06-04 13:53:05,682 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999965、用tio开发udp,有点意思】
2018-06-04 13:53:05,682 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999966、用tio开发udp,有点意思】
2018-06-04 13:53:05,682 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999967、用tio开发udp,有点意思】
2018-06-04 13:53:05,682 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999968、用tio开发udp,有点意思】
2018-06-04 13:53:05,682 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999969、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999970、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999971、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999972、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999973、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999974、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999975、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999976、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999977、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999978、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999979、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999980、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999981、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999982、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999983、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999984、用tio开发udp,有点意思】
2018-06-04 13:53:05,683 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999985、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999986、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999987、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999988、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999989、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999990、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999991、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999992、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999993、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999994、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999995、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999996、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999997、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999998、用tio开发udp,有点意思】
2018-06-04 13:53:05,684 INFO  o.t.s.u.s.ShowcaseUdpHandler[29]: 收到来自127.0.0.1:50837的消息:【999999、用tio开发udp,有点意思】

        7、打完收功

相关标签: 性能