ServerSocket服务器端对象::
构造方法摘要 | |
---|---|
ServerSocket() 创建非绑定服务器套接字。 | |
ServerSocket(int port) 创建绑定到特定端口的服务器套接字。 | |
ServerSocket(int port, int backlog) 利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。 | |
ServerSocket(int port, int backlog, InetAddress bindAddr) 使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。 |
常用方法:
Socket | accept() 侦听并接受到此套接字的连接。 |
package cn.itheima.cway.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
/**
* 服务器端
* 思路:
* 1,创建服务端socket服务,通过serversocket对象
* 2,服务器端必须对外提供一个端口,否则客户端没法连接
* 3,获取连过来的客户端对象
* 4,通过客户端对象获取socket流,读取客户端发来的数据
* 5,关闭资源 (关客户端,关服务端)
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//创建服务端对象
ServerSocket server=new ServerSocket(10002);
//获取连接过来的客户端对象
Socket c=server.accept();
//通过socket对象获取输入流
InputStream in=c.getInputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);
String text=new String(buf,0,len);
String ip=c.getLocalAddress().getHostAddress();
System.out.println(ip+":"+text);
//关闭资源
server.close();
c.close();
}
}
客户端对象:
构造方法摘要 | |
---|---|
| Socket() 通过系统默认类型的 SocketImpl 创建未连接套接字 |
| Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。 |
| Socket(InetAddress host, int port, boolean stream) 已过时。 Use DatagramSocket instead for UDP transport. |
| Socket(InetAddress address, int port, InetAddress localAddr, int localPort) 创建一个套接字并将其连接到指定远程地址上的指定远程端口。 |
| Socket(Proxy proxy) 创建一个未连接的套接字并指定代理类型(如果有),该代理不管其他设置如何都应被使用。 |
protected | Socket(SocketImpl impl) 使用用户指定的 SocketImpl 创建一个未连接 Socket。 |
| Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。 |
| Socket(String host, int port, boolean stream) 已过时。 使用 DatagramSocket 取代 UDP 传输。 |
| Socket(String host, int port, InetAddress localAddr, int localPort) 创建一个套接字并将其连接到指定远程主机上的指定远程端口。 |
常用方法:
InetAddress | getInetAddress() 返回套接字连接的地址。 |
InputStream | getInputStream() 返回此套接字的输入流。 |
package cn.itheima.cway.tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientDemo {
/**
* 客户端
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
Socket c=new Socket(InetAddress.getByName("192.168.0.2"), 10002);
//获取socket流中的输出流
OutputStream out=c.getOutputStream();
//使用输出流将指定的数据写出去
out.write("你好,jiava".getBytes());
c.close();
}
}