演示1
//客户端
class Client{
public static void main(String[] args){
//客户端发数据到服务端
/*
* Tcp传输,客户端建立的过程。
* 1,创建tcp客户端socket服务。使用的是Socket对象。
* 建议该对象一创建就明确目的地。要连接的主机。
* 2,如果连接建立成功,说明数据传输通道已建立。
* 该通道就是socket流 ,是底层建立好的。 既然是流,说明这里既有输入,又有输出。
* 想要输入或者输出流对象,可以找Socket来获取。
* 可以通过gteetOutputStream(),和getInputStream()来获取两个字节流。
* 3,使用输出流,将数据写出。
* 4,关闭资源。
*/
Socket s=new Socket(InteAddress.getByName("192.168.1.108"),10000);
String text="你好服务端";
OutputStream os=s.getOutPutStream();
os.write(os.getByte(),0,os.getbyte().length);
os.close();
s.close();
}
}
//服务端
class Server{
public static void main(String[] args){
// 服务端接收客户端发送过来的数据,并打印在控制台上。
/*
* 建立tcp服务端的思路:
* 1,创建服务端socket服务。通过ServerSocket对象。
* 2,服务端必须对外提供一个端口,否则客户端无法连接。
* 3,获取连接过来的客户端对象。
* 4,通过客户端对象获取socket流读取客户端发来的数据
* 并打印在控制台上。
* 5,关闭资源。关客户端,关服务端。
*/
ServerSocket ss=new ServerSocket(10000);
ss.accept();
InputStream is=ss.getInputStream();
byte[] buf=new byte[1024];
is.read(buf);
String s=new String(buf,0,buf.length);
System.out.println(s);
is.close();
ss.close();
}
}
TCP协议-服务端和客户端交互
class Client{
public static void main(String[] args){
System.out.println("客户端");
Socket s=new Socket(InteAddress.getByName(192.168.1.108),10003);
OutputStream os=s.getOutputStream();
String text="你好服务端";
os.write(text.getByte());
//接收服务端发送回来的数据
InputStream is=s.getInputStream();
byte[] buf=new byte[1024];
is.read(buf);
String answer=new String(buf,0,buf.length);
System.out.println(answer);
}
}
class Server{
public static void main(String[] args){
System.out.println("服务端");
ServerSocket ss=new ServerSocket(10003);
ss.acceept();
OutputStream os=ss.getOutputStream();
byte[] buf=new byte[1024];
os.read(buf);
String s=new String(buf,0,buf.length);
InputStream is=ss.getInputStream();
String answer="我是服务端,收到你的信息";
is.writer(answer.getBytes());
is.close();
os.close();
ss.close();
}
}
TCP写一个简单的上传文件
//上传的客户端
public class UploadClient {
public static void main(String[] args) throws IOException {
File f=new File("c:\\client.txt");
FileReader fr=new FileReader(f);
BufferedReader br=new BufferedReader(fr);
Socket s=new Socket("192.168.1.108", 10006);
OutputStream sos=s.getOutputStream();
PrintWriter pw=new PrintWriter(sos,true);
String line=null;
while((line=br.readLine())!=null){
pw.println(line);
}
s.shutdownOutput();//告诉服务,客户端写完了
//接收服务端,发送回来的提示
InputStream sis=s.getInputStream();
InputStreamReader isr=new InputStreamReader(sis);
BufferedReader sbr=new BufferedReader(isr);
String answer=sbr.readLine();
System.out.println(answer);
sis.close();
sos.close();
s.close();
}
}
//上传的服务端
public class UploadServer {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(10006);
Socket s=ss.accept();
//上传的文件的存储位置
File f=new File("D:\\Server2.txt");
FileWriter fw=new FileWriter(f);
BufferedWriter bw=new BufferedWriter(fw);
//
InputStream sis=s.getInputStream();
InputStreamReader sisr=new InputStreamReader(sis);
BufferedReader sbr=new BufferedReader(sisr);
//
String line=null;
while((line=sbr.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println("上传成功");
bw.close();
s.close();
ss.close();
}
}