📄 autonickchangeserver.java
字号:
/*
* @(#)AutoNickChangeServer.java
*
* Copyright (c) 1997-2003, Jang-Ho Hwang
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the Jang-Ho Hwang nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: AutoNickChangeServer.java,v 1.1 2003/05/10 20:03:25 xrath Exp $
*/
package rath.jmsn.util;
import java.io.*;
import java.net.*;
import rath.msnm.MSNMessenger;
import rath.jmsn.MainFrame;
/**
*
* @author Jang-Ho Hwang, rath@xrath.com
* @version 1.0.000
*/
public class AutoNickChangeServer implements Runnable
{
private int port = 7190; /* Default UDP Bind port */
private DatagramSocket socket;
private Thread thread;
private static AutoNickChangeServer INSTANCE;
private AutoNickChangeServer()
{
}
public static AutoNickChangeServer getInstance()
{
if( INSTANCE==null )
{
INSTANCE = new AutoNickChangeServer();
}
return INSTANCE;
}
public void setPort( int port )
{
this.port = port;
}
public int getPort()
{
return this.port;
}
public void start() throws IOException
{
if( socket!=null )
return;
socket = new DatagramSocket(this.port);
thread = new Thread(this);
thread.start();
}
public void run()
{
long lastReceived = System.currentTimeMillis();
while(true)
{
DatagramPacket pkt = new DatagramPacket(new byte[2048], 2048);
try
{
socket.receive(pkt);
if( System.currentTimeMillis() > lastReceived + 1000L )
process( pkt.getData(), pkt.getOffset(), pkt.getLength() );
lastReceived = System.currentTimeMillis();
}
catch( Exception e )
{
e.printStackTrace();
}
}
}
protected void process( byte[] data, int off, int len ) throws Exception
{
int i0 = -1;
for(int i=off, max=off+len; i<max; i++)
{
if( data[i]==0x01 )
{
i0 = i;
break;
}
}
if( i0==-1 )
return;
String requestPass = new String(data, off, i0-off);
String requestNick = new String(data, i0+1, len-(i0-off)-1);
String prefix = MainFrame.LOCALCOPY.getProperty( MainFrame.AUTONICK + ".prefix", "" );
String postfix = MainFrame.LOCALCOPY.getProperty( MainFrame.AUTONICK + ".postfix", "" );
String password = MainFrame.LOCALCOPY.getProperty( MainFrame.AUTONICK + ".password", "jmsn");
if( !requestPass.equals(password) )
return;
String newNick = prefix + requestNick + postfix;
MSNMessenger msnm = MainFrame.INSTANCE.getMessenger();
if( msnm!=null && msnm.isLoggedIn() )
msnm.setMyFriendlyName( newNick );
}
public void stop() throws IOException
{
socket.close();
socket = null;
thread.interrupt();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -