TCP协议发送数据:
(1)创建发送端的Socket对象
(2)获取输出流,写数据
(3)释放资源
TCP协议接收数据:
(1)创建接收端Socket对象
(2)监听客户端的连接。返回一个Socket对象
(3)获取输入流,读取数据显示再控制台
(4)释放资源
1、发送消息:
客户端:
package tcpDemo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientDemo {
public static void main(String[] args) throws IOException {
//创建客户端Socket对象
Socket s = new Socket("172.28.22.36",10001);
//获取输出流
OutputStream os = s.getOutputStream();
os.write("俺会使TCP辣".getBytes());
//获取输入流
InputStream is = s.getInputStream();
byte[] b = new byte[1024];
int len = is.read(b); //阻塞
String client = new String(b, 0, len);
System.out.println("client:" + client);
//释放资源
s.close();
}
}
服务器端:
package tcpDemo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
//创建服务器Socket对象
ServerSocket ss = new ServerSocket(10001);
//监听客户端的连接
Socket s = ss.accept(); //阻塞
//获取输入流
InputStream is = s.getInputStream();
byte[] by = new byte[1024];
int len = is.read(by); //阻塞
String server = new String(by, 0, len);
System.out.println("server:" + server);
//获取输出流
OutputStream os = s.getOutputStream();
os.write("数据已收到".getBytes());
//释放资源
s.close();
}
}
2、向客户端传文本文件:
服务器端:
package tcpDemo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerFileDemo {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(22223);
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(
s.getInputStream()));
BufferedWriter bw = new BufferedWriter(new FileWriter("copy.txt"));
String line = null;
while((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
bw.flush();
}
//给出反馈
BufferedWriter bww = new BufferedWriter(new OutputStreamWriter(
s.getOutputStream()));
bww.write("文件上传成功");
bww.newLine();
bww.flush();
bw.close();
s.close();
}
}
客户端:
package tcpDemo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class ClientFileDemo {
public static void main(String[] args) throws IOException {
Socket s = new Socket("172.28.22.36",22223);
BufferedReader br = new BufferedReader(new FileReader("b.txt"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line = null;
while((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
bw.flush();
}
s.shutdownOutput();
//接收反馈
BufferedReader brr = new BufferedReader(new InputStreamReader(
s.getInputStream()));
String client = brr.readLine();
System.out.println(client);
s.close();
bw.close();
}
}
3、上传图片:
服务器端:
package tcpDemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerPhotoDemo {
public static void main(String[] args) throws IOException {
//创建Socket对象
ServerSocket ss = new ServerSocket(36363);
//监听呵护端连接
Socket s = ss.accept();
//封装通道内流
BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
//封装图片文件
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("456.jpg"));
byte[] by = new byte[1024];
int len = 0;
while((len = bis.read(by)) != -1) {
bos.write(by);
bos.flush();
}
//反馈
OutputStream os = s.getOutputStream();
os.write("图片上传成功".getBytes());
bos.close();
s.close();
}
}
客户端:
package tcpDemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.imageio.stream.FileImageInputStream;
public class ClientPhotoDemo {
public static void main(String[] args) throws IOException {
Socket s = new Socket("172.28.22.36",36363);
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream("123.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
byte[] by = new byte[1024];
int len = 0;
while((len = bis.read(by)) != -1) {
bos.write(by);
bos.flush();
}
s.shutdownOutput();
//读取反馈
InputStream is = s.getInputStream();
byte[] by1 = new byte[1024];
int len1 = is.read(by1);
String client = new String(by1, 0, len1);
System.out.println(client);
//释放资源
bis.close();
s.close();
}
}