TCP协议
TCP协议发送数据
* A / 创建发送端的Socket对象,这一部如果成狗,就说明连接已经建立成功
* B / 获取输出流,写数据
* C / 释放资源
创建发送端对象用到的方法:
Socket(InetAddress address, int port)
// 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host, int port) //创建一个流套接字并将其连接到指定主机上的指定端口号。
获取输出流的方法:
public OutputStream getOutputStream() //返回此套接字的输出流。
发送端代码范例:
package cn.itcast_01;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
/*
* TCP协议发送数据
* A / 创建发送端的Socket对象,这一部如果成功,就说明连接已经建立成功
* B / 获取输出流,写数据
* C / 释放资源
*/
public class ClientDemo {
public static void main(String[] args) throws IOException, IOException {
//创建发送端对象
//Socket(InetAddress address, int port) // 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
//Socket(String host, int port) //创建一个流套接字并将其连接到指定主机上的指定端口号。
//Socket s = new Socket(InetAddress.getByName("192.168.0.8"),8888);
Socket s = new Socket("192.168.0.8",8888);
//获取输出流,写数据
//public OutputStream getOutputStream()
OutputStream os = s.getOutputStream();
os.write("hello,tcp.我来了".getBytes());
//释放资源
s.close();
}
}
TCP协议接收数据
ServerSocket(int port) //创建绑定到特定端口的服务器套接字。
public Socket accept() //
TCP接收端代码
package cn.itcast_01;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* TCP协议接收数据
* A / 创建接收端的Socket对象
* B / 监听客户端连接,返回一个对应的Socket对象
* C / 获取输入流,读取数据显示在控制台
* D / 释放资源
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
//创建接收端的Socket对象
//ServerSocket(int port) //创建绑定到特定端口的服务器套接字。
ServerSocket ss = new ServerSocket(8888);
//监听客户端连接,返回一个对应的Socket对象
//public Socket accept() //
Socket s = ss.accept(); //阻塞式方法
//获取输入流,读取数据显示在控制台
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String str = new String(bys,0,len);
//获取发送方IP地址
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+":"+str);
//释放资源
s.close();
}
}
范例01:服务器给客户端发回一个反馈
客户端:
package cn.itcast_01;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/*
* TCP协议发送数据
* A / 创建发送端的Socket对象,这一部如果成功,就说明连接已经建立成功
* B / 获取输出流,写数据
* C / 释放资源
*/
public class ClientDemo {
public static void main(String[] args) throws IOException, IOException {
//创建发送端对象
//Socket(InetAddress address, int port) // 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
//Socket(String host, int port) //创建一个流套接字并将其连接到指定主机上的指定端口号。
//Socket s = new Socket(InetAddress.getByName("192.168.0.8"),8888);
Socket s = new Socket("192.168.0.8",8888);
//获取输出流,写数据
//public OutputStream getOutputStream()
OutputStream os = s.getOutputStream();
os.write("今天风很大,不要出门!".getBytes());
//获取输入流
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String client = new String(bys,0,len);
System.out.println("client:"+client);
//释放资源
s.close();
}
}
服务器端:
package cn.itcast_01;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* TCP协议接收数据
* A / 创建接收端的Socket对象
* B / 监听客户端连接,返回一个对应的Socket对象
* C / 获取输入流,读取数据显示在控制台
* D / 释放资源
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
//创建接收端的Socket对象
//ServerSocket(int port) //创建绑定到特定端口的服务器套接字。
ServerSocket ss = new ServerSocket(8888);
//监听客户端连接,返回一个对应的Socket对象
//public Socket accept() //
Socket s = ss.accept(); //阻塞式方法
//获取输入流,读取数据显示在控制台
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String server = new String(bys,0,len);
System.out.println("server:"+server);
//获取输出流
OutputStream os = s.getOutputStream();
os.write("数据已收到".getBytes());
//释放资源
s.close();
}
}
范例02:客户端键盘录入,服务器写到文本
客户端:
package cn.itcast_02;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
/*
* 客户端
*/
public class ClientDemo {
public static void main(String[] args) throws IOException {
//创建客户端Socket对象
Socket s = new Socket("192.168.0.8",23456);
//封装键盘录入
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
//封装通道内数据
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(s.getOutputStream()));
String line = null;
while((line = br.readLine())!=null){
if("over".equals(line)){
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
//关闭
s.close();
}
}
服务端:
package cn.itcast_02;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 服务器
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
//创建服务器Socket对象
ServerSocket ss = new ServerSocket(23456);
//监听客户端连接
Socket s = ss.accept();
//封装通道内数据
BufferedReader br = new BufferedReader(
new InputStreamReader(s.getInputStream()));
//封装文本文件
BufferedWriter bw = new BufferedWriter(
new FileWriter("a.txt"));
String line = null;
while((line = br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
s.close();
}
}