import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
/*
* TCP:
* 需要建立连接通道!
* 客户端的实现步骤:
* 1)创建客户端的Socket对象
* public Socket(String host, int port)
* 2)获取通道呢内的字节输出流对象
* public OutputStream getOutputStream()
* 3)通过输出流对象写数据到服务端
* OutputStream的write(byte[] bytes)
* 4)释放资源
* 释放Socket对象
* */
public class ClientDemo {
public static void main(String[] args) throws IOException, IOException {
// 1)创建客户端的Socket对象
Socket socket=new Socket(InetAddress.getByName("WL"),12345);
// 2)获取通道呢内的字节输出流对象
//每一个客户端都对应有自己的Socket对象
OutputStream out=socket.getOutputStream();
// 3)通过输出流对象写数据到服务器端
out.write("hello".getBytes());
// 4)释放资源
socket.close();
}
}
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*TCP服务器端完成的事情:
* 1)创建服务器端的Socket对象
* ServerSocket(int port)
* 2)侦听客户端连接
* public Socket accept()throws IOException:阻塞式方法
* 服务器没有链接上,一直等待!(网络中具有延迟性)
* 3)获取通道内字节输入流对象
* Socket
* public InputStream getInputStream()
* 4)读取客户端通过通道内的流发送数据
* 5)释放资源
* 服务器端的socket
* */
public class ServerDemo {
public static void main(String[] args) throws IOException {
// 1)创建服务器端的Socket对象
ServerSocket ss=new ServerSocket(12345);
// 2)侦听客户端连接
Socket socket=ss.accept();
// 3)获取通道内字节输入流对象
InputStream in=socket.getInputStream();
// 4)读取客户端通过通道内的流发送数据
//一次读取一个字节数组
byte[] bytes=new byte[1024];
int len=in.read(bytes);
String s=new String(bytes,0,len);
String ip=ss.getInetAddress().getHostAddress();
System.out.println(s+ip);
}
}