TCP(建立连接通道)编程的客户端的开发步骤
1)创建客户端的Socket对象
Socket:就是客户端的Socket
构造方法
public Socket(InetAddress address, int port)
public Socket(String host, int port):创建客户端套接字对象,并且指定端口号和ip文本形式
2)获取通道内的输出流对象
3)给服务器端写数据
4)释放资源
java.net.ConnectException: Connection refused: connect 连接被拒绝
1)创建服务器端的Socket对象
2)监听客户端的连接(阻塞方法)
3)获取通道内的输入流
4)读取数据,显示控制台
5)释放资源
1)创建客户端的Socket对象
Socket:就是客户端的Socket
构造方法
public Socket(InetAddress address, int port)
public Socket(String host, int port):创建客户端套接字对象,并且指定端口号和ip文本形式
2)获取通道内的输出流对象
3)给服务器端写数据
4)释放资源
java.net.ConnectException: Connection refused: connect 连接被拒绝
不要先运行客户端,客户端的连接需要服务器监听到才能连接
public static void main(String[] args) throws Exception {
//1)创建客户端的Socket对象
//public Socket(String host, int port)
Socket s = new Socket("192.168.10.1", 12306) ;
//2)获取通道内的输出流对象
// public OutputStream getOutputStream():获取套接字 的输出流
OutputStream out = s.getOutputStream() ;
//3)给服务器端写数据 过去
out.write("hello,Tcp,我来了".getBytes());
//释放资源
s.close();
}
}
服务端的开发步骤:1)创建服务器端的Socket对象
2)监听客户端的连接(阻塞方法)
3)获取通道内的输入流
4)读取数据,显示控制台
5)释放资源
ava.net.BindException: Address already in use: JVM_Bind 地址被绑定,因为已经有服务器在监听客户端连接
public class ServerDemo {
public static void main(String[] args) throws Exception {
// 1)创建服务器端的Socket对象
// public ServerSocket(int port) throws IOException创建绑定到特定端口的服务器套接字
ServerSocket ss = new ServerSocket(12306) ;
//2)监听客户端的连接(阻塞方法)
// public Socket accept(): throws IOException侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞
Socket s = ss.accept() ;
// 3)获取通道内的输入流
// InputStream getInputStream()
InputStream in = s.getInputStream() ;
// 4)读取数据,显示控制台
//获取ip文本形式'
// public InetAddress getInetAddress()
String ip = s.getInetAddress().getHostAddress() ;
byte[] bys = new byte[1024] ;
int len = in.read(bys) ;
String data = new String(bys, 0, len) ;
System.out.println("from" +ip +"data is :"+data);
// 5)释放资源
s.close();
// ss.close(); 服务端可以不关闭
}
}
改进。
public class ClientDemo {
public static void main(String[] args) throws IOException {
//创建客户端的Socket对象
Socket s = new Socket("192.168.10.1",10011) ;
//获取通道内的流 发哦少年宫数据
OutputStream out = s.getOutputStream() ;
out.write("今天天气不错,元芳,你怎么看?".getBytes());
//接收服务器端的反馈
//客户端获取通道内的输入流,读取反馈的数