⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sender.java

📁 联机坦克游戏
💻 JAVA
字号:
/*
 * Created on 2005-2-13
 *
 * comm
 */
package communication;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.*;
import java.io.*;

/**
 * @author Emtry Immortal
 * 
 * sender
 */
public class Sender {
	private DatagramSocket socket;

	Vector vMsg = new Vector();

	/**
	 *  
	 */
	public Sender(int port) {
		super();
		try {
			//creat send udp套接字,指定套接字口。
			socket = new DatagramSocket(port);

			//this.setPriority(Thread.MIN_PRIORITY);

			//this.start();
		} catch (SocketException e) {
			e.printStackTrace();
		}

	}

	public void send(Message msg, InetAddress address, int port) {
		byte[] sendBuf = null;
		ByteArrayOutputStream byteStream = new ByteArrayOutputStream(128);
		try {
			ObjectOutputStream os = new ObjectOutputStream(
					new BufferedOutputStream(byteStream));
			os.writeObject(msg);
			os.flush();
			sendBuf = byteStream.toByteArray();
		} catch (IOException e) {
			e.printStackTrace();
		}
		//创建udp数据包以发送数据
		DatagramPacket packet=null;
		packet = new DatagramPacket(sendBuf, sendBuf.length, address, port);
		SendNoteTask sendNtk=new SendNoteTask(socket,packet);
		Thread sndntk=new Thread(sendNtk);
		sndntk.start();
	}

	public void close() {
		//发送完毕关闭套接字。
		socket.close();
	}
}

class SendNoteTask implements Runnable {
	private DatagramSocket socket;

	private DatagramPacket packet;

	/**
	 * @param socket
	 * @param packet
	 */
	public SendNoteTask(DatagramSocket socket, DatagramPacket packet) {
		super();
		this.socket = socket;
		this.packet = packet;
	}
	
	public synchronized void run() {
		try {
			socket.send(packet);
			packet = null;
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -