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通讯源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)