- TCP
- TCP发送接收数据
- 发送数据
- Socket
- 接收数据
- ServerSocket
- TCP通信案例1
- TCP接收数据后给出反馈案例2
- TCP接收数据后给出反馈案例3
- TCP接收数据后给出反馈案例4
概述:
- TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信
- Java对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信
- Java为客户端提供了Socket类,为服务器端提供了ServerSocket类
1.创建客户端的Socket对象
Socket s=new Socket("host",port:12345);
Socket s=new Socket(InetAddress.getByName("host"),port:12345);
2.获取输出流,写数据
OutputStream os=s.getOutputStream();
3.释放资源
os.close();
s.close();
Socket:实现客户端套接字。套接字是两台机器之间通信的端点
Socket所在包:java.net public class Socket extends Object implements Closeable 实现客户端套接字。套接字是两台机器之间通信的端点
常用方法:
| 方法名 | 作用 |
|---|---|
| Socket(InetAddress address,int port) | 创建流套接字并将其连接到指定IP地址的指定端口号 |
| Socket(String host,int port) | 和上面功能相同,不过在底层原理中会将host字符串转换为InetAddress |
| OutputStream getOutputStream() | 返回此套接字的输出流 |
1.创建服务器端Socket对象(ServerSocket) ServerSocket(int port); ServerSocket ss=new ServerSocket(int port); 2.获取输入流,读数据,并把数据显示在控制台 InputStream is=ss.getInputStream(); 3.释放资源 ss.close();ServerSocket
public class ServerSocket extends Object implements Closeable 服务器套接字。服务器套接字等待通过网络进入的请求。它根据该请求执行一些操作,然后可能将结果返回给请求者
常用方法:
| 方法名 | 作用 |
|---|---|
| ServerSocket(in port) | 创建绑定到指定端口的服务器套接字 |
| Socket accept() | 侦听要连接到此套接字并接收它 返回一个Socket对象 |
代码示例:
发送的核心代码
Socket s=new Socket(InetAddress:"localhost",port:12345);
OutpurStream os=s.getOutputStream();
os.write("需要传递的内容".getByte());
os.close();
s.close();
接收的核心代码
ServerSocket ss=new ServerSocket(port:12345);
InputStream is=ss.getInputStream();
Socket s = ss.accept();
byte[] by=new byte[1024];
int len = is.read(by);
String data=new String(by,0,len);
System.out.print("数据是="+data);
ss.close(); //一般释放这一个就可以了 因为is是承接ss对象定义的
is.close();
TCP接收数据后给出反馈案例2
代码示例:
发送:
Socket s=new Socket(InetAddress:"localhost",port:12345);
OutputStream os=s.getOutputStream();
os.write("TCP我来了!".getByte());
//接收服务器反馈
InputStream is=s.getInputStream();
byte[] by=new byte[1024];
int len=is.read(by);
String data=new String(by,0,len);
System.out.print("客户端:"+data);
s.close();
接收:
ServerSocket ss=new ServerSocket(port:12345);
Socket s=ss.accept();
InputStream is=s.getInputStream();
byte[] by=new byte[1024];
int len=is.read(by);
String data=new String(by,0,len);
System.out.print("服务端:"+data);
//给出反馈
OutputStream os=s.getOutputStream();
os.write("数据已收到".getByte[]);
ss.close();
//s.close();
//is.close();
TCP接收数据后给出反馈案例3
代码示例:
服务端
public class ServerDemo{
public static void main(String[] args) throws IOException{
ServerSocket ss = new ServerSocket(10080);
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\Users\23353\Desktop\666\xxx.txt")));
while((line=br.readLine())!=null){ //字符流的特有方法:String readLine()
System.out.println(line);
bw.write(line);
bw.newline();
bw.flush();
}
ss.close();
}
}
客户端
public static void main(String[] args) throws IOException{
Socket s = new Socket("100.64.219.93",10080);
OutputStream os = s.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line;
while((line = br.readLine())!=null){
if("886".equals(line)){
break;
}
bw.write(line);
bw.newline();
bw.flush();
}
s.close();
}
TCP接收数据后给出反馈案例4
要求:
服务器端数据来源于文件
客户端数据来源于文件
代码示例:
服务器端
public static void main(String[] args) throws IOException{
ServerSocket ss = new ServerSocket(10080);
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\Users\23353\Desktop\666\xxx.txt")));
//这里用BufferedWriter bw = new BufferedWriter(new FileWriter("C:\Users\23353\Desktop\666\xxx.txt")); 也可以
while((line=br.readLine())!=null){//字符流的特有方法StringreadLine()
System.out.println(line);
bw.write(line);
bw.newline();
bw.flush();
}
ss.close();
}
客户端
public static void main(String[] args) throws IOException{
Socket s = new Socket("100.64.219.93",10080);
OutputStream os = s.getOutputStream();
BufferedReader br = new BufferedReader(new FileReader("C:\Users\23353\Desktop\666\laiyuan.txt"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newline();
bw.flush();
}
s.close();
}



