主机的地址就是作为服务器的IP地址!要是连接你自己的就直接用localhost或是127001都可以!要是连接其他的!就该城相应的IP就可以!
oracle端口号是1521,mysql端口号是3306,sql server端口号是1433,我们一般使用的也就这几中数据库!记住这三个端口号就可以了!记住!这些端口号都是默认的!是可以更改的!
1端口占用编译器会报错,可以从错误看出来是不是端口被占用。没有专门的检测工具和方法
2DatagramSocket(在Java中使用UDP协议编程的相关类)
用于接收和发送UDP的Socket实例。该类有3个构造函数:
DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让 *** 作系统分配一个可用的端口。
DatagramSocket(int port):创建实例,并固定监听Port端口的报文。通常用于服务端
DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文。
DatagramSocket具有的主要方法如下:
1)receive(DatagramPacket d):接收数据报文到d中。receive方法产生一个“阻塞”。“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。
2)send(DatagramPacket dp):发送报文dp到目的地。
3)setSoTimeout(int timeout):设置超时时间,单位为毫秒。
4)close():关闭DatagramSocket。在应用程序退出的时候,通常会主动释放资源,关闭Socket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Socket。
希望对您有帮助谢谢
public class TestPort
{
public static void main(String[] args)
{
Systemoutprintln(getPID("3306"));//得到进程ID,3306是端口名称
Systemoutprintln(getProgramName(getPID("3306")));//根据进程ID得到映像名称
killTask(getProgramName(getPID("3306")));//根据映像名称关闭进程
}
// 得到进程ID
public static String getPID(String port){
InputStream is = null;
BufferedReader br = null;
String pid = null;
try
{
String[] args = new String[]{"cmdexe","/c","netstat -aon|findstr",port};
is = RuntimegetRuntime()exec(args)getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String temp = brreadLine();
if(temp != null){
String[] strs = tempsplit("\\s");
pid=strs[strslength-1];
}
}
catch (IOException e)
{
eprintStackTrace();
}finally{
try
{
brclose();
}
catch (IOException e)
{
eprintStackTrace();
}
}
return pid;
}
//根据进程ID得到映像名称
public static String getProgramName(String pid){
InputStream is = null;
BufferedReader br = null;
String programName = null;
try
{
String[] args = new String[]{"cmdexe","/c","tasklist|findstr",pid};
is = RuntimegetRuntime()exec(args)getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String temp = brreadLine();
if(temp != null){
String[] strs = tempsplit("\\s");
programName=strs[0];
}
}
catch (IOException e)
{
eprintStackTrace();
}finally{
try
{
brclose();
}
catch (IOException e)
{
eprintStackTrace();
}
}
return programName;
}
//根据映像名称关闭进程
public static void killTask(String programName){
String[] args = new String[]{"Taskkill","/f","/IM",programName};
try
{
RuntimegetRuntime()exec(args);
}
catch (IOException e)
{
eprintStackTrace();
}
}
}
//题主自己看看具体怎么get它的ip地址,好久没有写,不知道了
你是因为什么原因要终止这个线程的呢?直接把这个serverSocket close掉不行么?
如果你是因为程序出错,端口又被占用。可以这样查杀占用端口的进程。。。
netstat -na -o 找到占用1234端口的进程号
taskkill /pid 进程号
这样就可以杀死那个进程了····
如果是要在程序中控制的话,用close方法,然后把那个serverSocket置为null应该就可以了吧。。。
而且楼上说得对,你的程序本来就有问题,serverSocket 的实例话就不应该也在循环里面,估计你是接受到一个客户端以后,new 一个serverSocket ,继续绑定1234端口报错,所以才来提问的。这个是你程序的问题,并不需要去杀死那个什么线程。。。
以上就是关于java连接数据库时,为什么会报端口占用的错全部的内容,包括:java连接数据库时,为什么会报端口占用的错、java中如何检测本机指定的UDP服务端口是否被占用并且自动分配一个可用udp端口;、被占用的端口如何通过Java代码查出是那个ip占用的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)