功能:客户端发送一句话到服务器:(单向通信)(TCP)
客户端:
package com.gao.Project.pro3;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class TestClient {//客户端
public static void main(String[] args) throws IOException {
//1.创建套接字:指定服务器的IP和端口号
Socket s = new Socket("192.168.2.142",8888);
//对于程序员来说,向外发送数据 感受--->利用输出流
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//利用这个OutputStream就可以向外发送数据了,但是没有直接发送String 的方法
//所以我们又在OutputStream外面套了一个处理流DataOutputStream
dos.writeUTF("你好");
//3.关闭流 + 关闭网络资源:
dos.close();
os.close();
s.close();
}
}
服务器:
package com.gao.Project.pro3;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TestServer {//服务器
public static void main(String[] args) throws IOException {
//1.创建套接字:指定服务器的端口号
ServerSocket ss = new ServerSocket(8888);
//2.等着客户端发来的信息:
Socket s = ss.accept();//阻塞方法:等待接收客户端的数据,什么时候收到数据,什么时候程序继续向下执行
//accept()返回值为一个Socket,这个Socket其实就是客户端的Socket
//接到这个Socket以后,客户端和服务器才真正产生了连接,才真正可以通信了
//3.感受到的操作流:
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
//4.读取客户端发来的数据
String str = dis.readUTF();
System.out.println("客户端发来的数据为"+str);
//5.关闭流+关闭网络资源:
dis.close();
is.close();
s.close();
ss.close();
}
}
测试:
(1)先开服务器,再开启启客户端
(2)先开客户端,就会出错
功能:服务器端接收完客户端发来的数据,再向客户端输出一句话:(双向通信)(TCP)
服务器:
package com.gao.Project.pro3;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TestServer {//服务器
public static void main(String[] args) throws IOException {
//1.创建套接字:指定服务器的端口号
ServerSocket ss = new ServerSocket(8888);
//2.等着客户端发来的信息:
Socket s = ss.accept();//阻塞方法:等待接收客户端的数据,什么时候收到数据,什么时候程序继续向下执行
//accept()返回值为一个Socket,这个Socket其实就是客户端的Socket
//接到这个Socket以后,客户端和服务器才真正产生了连接,才真正可以通信了
//3.感受到的操作流:
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
//4.读取客户端发来的数据
String str = dis.readUTF();
System.out.println("客户端发来的数据为"+str);
//向客户端输出一句话:---->操作流---->输出流
OutputStream os = s.getOutputStream();
DataOutputStream dos =new DataOutputStream(os);
dos.writeUTF("你好,我是服务器端,我接收到你的请求了");
//5.关闭流+关闭网络资源:
dis.close();
is.close();
s.close();
ss.close();
}
}
客户端:
package com.gao.Project.pro3;
import java.io.*;
import java.net.Socket;
public class TestClient {//客户端
public static void main(String[] args) throws IOException {
//1.创建套接字:指定服务器的IP和端口号
Socket s = new Socket("192.168.2.142",8888);
//对于程序员来说,向外发送数据 感受--->利用输出流
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
//利用这个OutputStream就可以向外发送数据了,但是没有直接发送String 的方法
//所以我们又在OutputStream外面套了一个处理流DataOutputStream
dos.writeUTF("你好");
//接收服务器端的回话--->利用输入流:
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
String str = dis.readUTF();
System.out.println("服务器对我说"+str);
//3.关闭流 + 关闭网络资源:
dis.close();
is.close();
dos.close();
os.close();
s.close();
}
}
标签:java,Socket,import,TCP,服务器,close,客户端
From: https://www.cnblogs.com/gaoxiaocuo/p/16712615.html