TCP客户端
客户端发数据到服务端
Tcp传输: 客户端建立的过程.
思路:
1.创建Tcp客户端socket服务.使用的是socket对象.
建议该对象一创建就明确目的地.要连接的主机.
2.如果连接建立成功,说明数据传输通道已建立.
该通道就是socket流,是底层建立好的. 既然是流,说明这里既有输入,又有输出.
想要输入和输出流对象,可以找socket来获取.
可以通过getOutputStream(),和getInputStream()来获取两个字节流.
3.使用输出流. 将数据写出.
4.关闭资源
代码实现:
import java.net.Socket;
import java.io.OutputStream;
import java.io.IOException;
public class TCPClientDemo {
public static void main(String[] args) throws IOException {
System.out.println("TCP客户端启动...");
//1.建立客户端socket服务
Socket s = new Socket("127.0.0.1", 10000);
//2.获取socket流中的输出流
OutputStream out = s.getOutputStream();
//使用输出流将指定的数据写出去
out.write("tcp演示: Hello Java".getBytes());
//关闭资源
s.close();
}
}
TCP服务端
服务端接收客户端的数据,并打印在控制台上
Tcp传输,客户端建立的过程.
思路:
1.创建Tcp客户端socket服务.使用的是socket对象.
建议该对象一创建就明确目的地.要连接的主机.
2.如果连接建立成功,说明数据传输通道已建立.
该通道就是socket流,是底层建立好的. 既然是流,说明这里既有输入,又有输出.
想要输入和输出流对象,可以找socket来获取.
可以通过getOutputStream(),和getInputStream()来获取两个字节流.
3.使用输出流. 将数据写出.
4.关闭资源
代码实现:
import java.net.ServerSocket;
import java.net.Socket;
import java.io.IOException;
import java.io.InputStream;
public class TCPServerDemo {
public static void main(String[] args) throws IOException {
System.out.println("TCP服务端端启动...");
//1.创建服务端对象
ServerSocket ss = new ServerSocket(10000);
//2.获取连接过来的客户端对象
Socket s = ss.accept(); //阻塞式
//获取ip地址
String ip = s.getInetAddress().getHostAddress();
//3.通过socket对象获取输入流,要读取客户端发来的数据
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
//因为知道发的数据不会很多...所有就直接可以弄了
int len = in.read(buf);
String text = new String(buf,0,len);
System.out.println(ip+":"+text);
//4.关闭资源
s.close();
ss.close();
}
}
与UDP
不同的是TCP
必须先启动服务端…因为TCP是必须先建立连接的.
运行结果
先执行服务端
因为Socket s = ss.accept()
是阻塞式的,需要接收到数据,才会往下执行.
执行客户端
这时再看服务端
收到了客户端发送的消息了…以及知道了是那个ip发送的…
还可以让客户端持续发送文字…然后服务端持续接收…或者通过客户端上传照片,音乐等文件到服务端上