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

📄 d04f1514ddd5001919beb9595aa95db7

📁 使用TCP和UDP协议
💻
字号:
/*
 * Created on 2005-5-31
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package server;

/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.net.*;
import java.io.*;
import java.util.*;

class JabberThread extends Thread{
    private int port = 1235;
    ServerGUI serverGUI = null;
    TCPThread tcpThread = null;
    DatagramSocket receiveSocket = null;
    DatagramPacket packetReceived = null;
    Iterator iterSockets = null;
    //为了给Client端发消息 :
    OutputStream out = null;
    DataOutputStream datumOut = null;
    byte[] byteReceived = new byte[1024];
    int receivedSize;
    InetAddress serverAddress;
    JabberThread(ServerGUI serverGUI, TCPThread tcpThread ,int udpPort)
    {
        this.serverGUI = serverGUI;
        this.tcpThread = tcpThread;
        port = udpPort;
        
        try
        {
            serverAddress = InetAddress.getByName(null);
        } catch(UnknownHostException uhn)
        {
            
        }
        
        try
        {
            receiveSocket = new DatagramSocket(serverGUI.udpPort);
            //System.out.println(receiveSocket.getInetAddress().getCanonicalHostName());
        } catch(SocketException se)
        {
            serverGUI.appendDisplayArea("无法打开DatagramSocket,无法接收消息,请确定端口可用,然后重新启动\n");
            return ;
        }
        
       packetReceived = new DatagramPacket(byteReceived, receivedSize);
       if (packetReceived == null)
           serverGUI.appendDisplayArea("null\n");
    }
    public void run()
    {
        while(true)
        {
	        try
	        {
	            
	            receiveSocket.receive(packetReceived);
	            System.out.println(packetReceived.getLength());
	            serverGUI.appendDisplayArea("接到一个DatagramPacket\n");
	        } catch(IOException ioe)
	        {
	            serverGUI.appendDisplayArea("接收一个DatagramPacket时出现输入输出异常\n");
	        }
	        iterSockets = tcpThread.sockets.values().iterator();
	        if (iterSockets != null)
	        {
	            //debug:
	            System.out.println("iterSockets is not null");
	            while(iterSockets.hasNext())
	            {
	                //debug
	                System.out.println("iterSockets has next");
	                try
	                {
	                    out = ((Socket)iterSockets.next()).getOutputStream();
	                } catch(IOException ioe)
	                {
	                    serverGUI.appendDisplayArea("得到TCP连接输出时出现错误\n");
	                    out = null;
	                }
	                if (out != null)
	                {
	                    System.out.println("outputStream is not null");
	                    datumOut = new DataOutputStream(out);
	                    try
	                    {
	                        //datumOut.write(packetReceived.getData(), 0, packetReceived.getLength());
	                        String temp = new String(byteReceived);
	                        System.out.println(temp);
	                        datumOut.writeUTF(temp);
	                        System.out.println("to write(packetReceived.getData())");
	                    } catch(IOException e)
	                    {
	                        serverGUI.appendDisplayArea("往TCP连接输出byte[]时出现异常\n");
	                    }
	                }
	            }
	        }
        }
    }
}

⌨️ 快捷键说明

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