Java中服务器端ServerSocket对象怎么获取服务器端地址和端口号,怎么获取远程请求的

Java中服务器端ServerSocket对象怎么获取服务器端地址和端口号,怎么获取远程请求的,第1张

ServerSocket s = new ServerSocket(8888);

while (true) {

// 建立连接

Socket socket = saccept();

/ /getInetAddress()获取远程ip地址,getPort()远程客户端的断后好

"你好,客户端地址信息: " + socketgetInetAddress() + "\t客户端通信端口号: " + socketgetPort()

新建一个ServerSocket对象然后用accept()方法接受请求连接的Socket对象在调用获得的Socket对象的getInetAddress()方法获取InetAddress对象在调用InetAddress对象的getHostAddress方法来获取IP地址。

//ServeOneSocket java 服务端源程序import java io ;import ;public class ServeOneSocket extends Thread {private Socket socket;private BufferedReader in;private PrintWriter out;private String content;/ Constructor/public ServeOneSocket(Socket s String c)throws IOException {socket=s;content=c;in=new BufferedReader(new InputStreamReader(socket getInputStream()));//enable auto flushout=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket getOutputStream())) true);start();//calls run()}public void run(){try{while (true){String str=in readLine();if (str equals( END ))break;System out println( Echoing: +str);out println(str);out println(content);}System out println( Closing );}catch(IOException e){}finally{try{socket close();}catch(IOException e){}}}}//SocketClientThread java 客户端源程序import ;import java io ;class SocketClientThread extends Thread{private Socket socket;private BufferedReader in;private PrintWriter out;private static int counter= ;private int id=counter++;private static int threadcount= ;final int port= ;public static int threadCount(){return threadcount;}public SocketClientThread(InetAddress addr){System out println( Making client: +id);threadcount++;try{socket=new Socket(addr port);}catch(IOException e){}try{in=new BufferedReader(new InputStreamReader(socket getInputStream()));out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket getOutputStream())) true);start();}catch(IOException e){try{socket close();}catch(IOException e ){}}}public void run(){try{for (int i= ;i<25;i++){outprintln("Client:"+id+":"+i);String str=inreadLine();Systemoutprintln(str);}outprintln("END");}catch(IOException e){}finally{try{socketclose();}catch(IOException e){}threadcount--;}}}public class MultiSocketClient {static final int MAX_THREADS=10;/ main @param args/public static void main(String[] args)throws IOException,InterruptedException {InetAddress addr=InetAddressgetByName(null);while (true){if (SocketClientThreadthreadCount() <max_threads)

new SocketClientThread(addr);ThreadcurrentThread()sleep(100);}}} lishixinzhi/Article/program/Java/gj/201311/27538 </max_threads)

工具/原料

一台配置好java环境的可以上网的电脑

Java获取本地Mac地址

首先,创建工程,包,和一个类。

在此不加详述,我们直接看代码。

这里,我把这个类命名为GetMacAddr

这里,最最关键的就是这里这个方法。

我们通过NetworkInterface这个类来 *** 作。

也就是通过getLocalHost()方法先得到本机IP,

然后调用getHardwareAddress()方法得到一个byte数组的地址。

我们把六位地址传到一个byte数组里面,然后输出来就是。

不多废话,看代码:

private void getMACAddr()

throws SocketException, UnknownHostException {

// 获得IP

NetworkInterface netInterface =

NetworkInterfacegetByInetAddress(InetAddressgetLocalHost());

// 获得Mac地址的byte数组

byte[] macAddr = netInterfacegetHardwareAddress();

Systemoutprint("MAC Addr:\t");

// 循环输出

for (byte b : macAddr) {

// 这里的toHexString()是自己写的格式化输出的方法,见下步。

Systemoutprint(toHexString(b) + " ");

}

}

上一步骤中,为什么会出现一个toHexString()方法呢?

因为可能10进制转16进制时候可能会出现单字符,

所以,如果有出现单字符的情况,我们在其前面添加一个“0”做占位符。

这也是为了视觉的直观,也夹带着个人的习惯。

private static String toHexString(int integer) {

// 将得来的int类型数字转化为十六进制数

String str = IntegertoHexString((int) (integer & 0xff));

// 如果遇到单字符,前置0占位补满两格

if (strlength() == 1) {

str = "0" + str;

}

return str;

}

然后,我们写一个简单的main方法测试一下。

public static void main(String[] args)

 throws SocketException, UnknownHostException {

new GetMacAddr()getMACAddr();

}

结果无误,我们得到了本地的MAC地址。

大家一起来试一试吧!

Socket做服务器需要绑定端口,你绑定时用的是啥就是啥。。。一般程序都是约定端口号,比如>

以上就是关于Java中服务器端ServerSocket对象怎么获取服务器端地址和端口号,怎么获取远程请求的全部的内容,包括:Java中服务器端ServerSocket对象怎么获取服务器端地址和端口号,怎么获取远程请求的、java中用socket通信怎么获取访问者的IP、Java中SOCKET通讯源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10080351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存