为了方便用户使用Socket进行通信,Java把Socket封装成了类。如果查看Socket类的源码,代码是比较长的。我们这里创建了一个Socket_来表示下它。
public class Socket_ {
public Socket_() {
}
public Socket_(Proxy proxy) {
}
public Socket_(SocketImpl impl) {
}
public Socket_(String host, int port) {
}
public Socket_(InetAddress addr, int port) {
}
public Socket_(String host, int port, InetAddress localAddr, int localPort) {
}
public Socket_(InetAddress addr, int port, InetAddress localAddr,
int localPort) {
}
public InputStream getInputStream() {
return null;
}
public OutputStream getOutputStream() {
return null;
}
}
这样我们可以对Socket类有了大致的了解,对于一般用户只要知道这个套接字能够连接到另一台计算机,并能够获取数据输入输出流着就足够了。
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TestSocket {
public static final int BUF_SIZE = 1024;
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5000);
InputStream input = socket.getInputStream();
// 好了,接下来就是InputStream对象的事了
// 就像以前介绍的那样,我们将获得大量的数据流
// 哈哈,准备接收数据吧
// 这次我们考虑InputStream流的read(byte[] b)方法
byte[] buf = new byte[BUF_SIZE];
int readCount = 0;
while ((readCount = input.read(buf)) != 0) {
//处理数据buf
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}