package p4.tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClientDemo {
public static void main(String[] args) throws IOException {
//客户端发数据到服务端
/*
* Tcp传输,客户端建立的过程
* 1 创建tcp客户端socket服务。使用的是Socket对象
* 建议该对象一创建就明确目的地,要连接的主机
* 2 如果连接建立成功 说明数据传输通道已建立
* 该通道是socket流 是底层建立好的 既然是流说明这里 即有输入 又有输出
* 想要输入或输出流对象 可以找Socket来获取
* 可以通过getOutputStream() 和getInputStream()来获取两个字节流
* 3 使用输出流 将数据写出
* 4 关闭资源
*/
//1 创建客户端服务
Socket socket=new Socket("10.194.43.59", 10002);
//获取scoket流中的输出流
OutputStream out=socket.getOutputStream();
//使用输出流将指定的数据写出去
String ip=socket.getInetAddress().getHostAddress();
out.write("演示:哥们又来了".getBytes());
//关闭资源
socket.close();
}
}
package p4.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPServerDemo {
public static void main(String[] args) throws IOException, IOException {
//服务端接收客户端 发送过来的 数据 并打印在控制台上
/*
* 建立tcp服务端的数据
* 1 创建服务端socket服务 通过ServerSocket对象
* 2 服务端必须对外提供一个端口 否则客户端 无法连接
* 3 获取连接过来的客户端对象
* 4 通过客户端对象 获取socket流读取客户端发来的数据
* 5 关闭资源 关客户端 关服务端
*
*/
//1 创建服务端对象
ServerSocket ss=new ServerSocket(10002);
//2 获取连接过来的客户端对象
Socket s=ss.accept();
//3 通过socket对象获取输入流 要读取客户端发来的数据
InputStream in=s.getInputStream();
String ip=s.getInetAddress().getHostAddress();
byte[]buf=new byte[1024];
int len=in.read(buf);
String text=new String(buf, 0, len);
System.out.println(ip+":"+text);
s.close();
ss.close();
}
}
package p4.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClientDemo2 {
public static void main(String[] args) throws IOException {
//客户端发数据到服务端
/*
* Tcp传输,客户端建立的过程
* 1 创建tcp客户端socket服务。使用的是Socket对象
* 建议该对象一创建就明确目的地,要连接的主机
* 2 如果连接建立成功 说明数据传输通道已建立
* 该通道是socket流 是底层建立好的 既然是流说明这里 即有输入 又有输出
* 想要输入或输出流对象 可以找Socket来获取
* 可以通过getOutputStream() 和getInputStream()来获取两个字节流
* 3 使用输出流 将数据写出
* 4 关闭资源
*/
Socket socket=new Socket("10.194.43.59", 10002);
OutputStream out=socket.getOutputStream();
String ip=socket.getInetAddress().getHostAddress();
out.write("演示:哥们又来了".getBytes());
//读取服务端返回的数据 要使用socket读取流
InputStream in=socket.getInputStream();
byte[]buf=new byte[1024];
int len=in.read(buf);
String text=new String(buf, 0, len);
System.out.println(text);
socket.close();
}
}
package p4.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPServerDemo2 {
public static void main(String[] args) throws IOException, IOException {
//服务端接收客户端 发送过来的 数据 并打印在控制台上
/*
* 建立tcp服务端的数据
* 1 创建服务端socket服务 通过ServerSocket对象
* 2 服务端必须对外提供一个端口 否则客户端 无法连接
* 3 获取连接过来的客户端对象
* 4 通过客户端对象 获取socket流读取客户端发来的数据
* 5 关闭资源 关客户端 关服务端
*
*/
//1 创建服务端对象
ServerSocket ss=new ServerSocket(10002);
//2 获取连接过来的客户端对象
Socket s=ss.accept();//阻塞式 没有客户端连入则等待
//3 通过socket对象获取输入流 要读取客户端发来的数据
InputStream in=s.getInputStream();
String ip=s.getInetAddress().getHostAddress();
byte[]buf=new byte[1024];
int len=in.read(buf);
String text=new String(buf, 0, len);
System.out.println(ip+":"+text);
//使用客户端socket对象的输出流给客户端返回数据
OutputStream out=s.getOutputStream();
out.write("收到".getBytes());
s.close();
ss.close();
}
}