在java中。Socket so = ss.accept()这句好怎么理解?特别是Socket so

import java.io.*;
import java.net.*;

public class TCPserver{
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(6666);
while(true){
Socket so = ss.accept();
InputStream s = so.getInputStream();
DataInputStream d = new DataInputStream(s);
System.out.println(d.readUTF());
so.close();
d.close();
}
}
}

ServerSocket ss是一个监听程序,调用accept()方法开始监听,当有连接接过来的时候
这个监听程序将收到并包装成Socket对象传递回来,以上程序使用变量Socket so来接收这个返回对象。追问

这里的Socket属于客户端还是服务器端?

追答

都不是,属于客户端和服务器端一个建立好得连接,直接可以利用这个连接进行通讯了。

追问

ss.getInetAddress() 是返回谁的IP? 服务器端不是ServerSocket吗 怎么会有Socket

追答

ss是服务器端的监听程序,ss.getInetAddress() 自然是服务器端的IP.
注意ss和so的区别。ss就是服务器端一个监听某端口连接信息的服务程序。
so是有客户端连接的通讯程序。ss在等待客户端连接,所以不知道它的客户端是谁。
so已经和客户端连上了,准确知道客户端是谁。

追问

看来你也不是理解很深啊 可以明确告诉你返回的是客服端到IP

追答

恩,好。这个细节学习了。
jdk的解释
Returns:
the address to which this socket is connected, or null if the socket is not yet connected.
确实是这样。

追问

我就是不清楚这里的Socket是属于服务器这边的 还是属于客服端那边是 还是只是一个应用

追答

我不明白为什么你总纠结是服务器端还是客户端。假设两台机器A,B
A上运行JVM,开了个ss接收连接请求,B上开个JVM,通过Socket连接到A,
这样A作为服务器,A的JVM中的Socket你说它属于服务器还是客户端。这不重要啊,
它是A机器上的一个程序,可以实现A和B的信息交换。B机器上的JVM中也有一个Socket
程序在和它交互,B的JVM中的Socket自然就是客户端的了。

追问

抱歉我还没学JVW 但是我已经定义了定义了它是服务器端 在服务器端不是用Socketserver吗 怎么会有Socket

追答

JVM就是JAVA虚拟机。你可能概念上有点没有转过来。
服务器端需要使用Socketserver和Socket
客户端使用Socket就够了。
通讯的时候是服务器端Socket和客户端Socket通讯

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-26
ServerSocket ss = new ServerSocket(6666);是监听端口号6666
程序运行到Socket so = ss.accept();时,如果没有客户端连接,通过accept()阻塞程序等待请求,不再向下运行,直到有客户端连接了,就得到Socket对象,并且程序继续向下运行。
至于Socket so,这个。。。没什么特别的啊,就是声明一个Socket对象,so是变量名啊。。。追问

ss.getInetAddress() 是返回谁的IP? 服务器端不是ServerSocket吗 怎么会有Socket

追答

Socket中有发出请求的客户端的一些信息,如果客户端发出请求时向Socket中存入了一些值或者文件之类的信息,在服务端就能通过Socke得到。比如在做向服务器上传文件的功能时,服务端怎么得到客户端上传的内容呢,就是通过Socket获取的。
getInetAddress()这个方法没怎么用过,不过通过字面的意思应该是返回服务端的IP,你可以输出测试一下,就知道了~~

追问

可以明确告诉你是客服端的IP 纠结中

追答

用ServerSocket的对象调用返回的也是客户端的IP,不会吧。。。Socket也有这个方法,难道两个对象调用这个方法,返回的IP是一样的?这个真没弄过

第2个回答  2011-09-26
有异常,为啥不抓取异常机制。追问

我不是已经 throws 了吗

追答

看java的TDK,然后多写,多分析,多做实验,你的帮手就是金山词霸

追问

不是API吗

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网