基于TCP的网络编程也就是socket操作,服务端与客户端做数据交互
基于TCP协议的客户端代码
import java.net.InetAddress;
public class Client{
public static void main(String [] args){
//根基服务端地址与端口号获得socket对象
Socket socket = new Socket(InetAddress.getByName("localhost"),8888);
//获得socket的输入流对象,封装为缓冲流输入流对象,用来读取服务器端的数据
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//获取socket的输出流对象,用printWriter,自动刷新
PrintWriter pw = new PrintWriter(socket.getOutputStream(),true);
//获取标准键盘输入流,封装缓冲流
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while (true){
//获取键盘输入的一行内容
String string = bufferedReader.readLine();
//输出流发送给服务器端
pw.println(string);
//输入流来读取服务器端的数据
string = br.readLine();
System.out.println("server say :"+string);
if ("BYE".equals(string)){
break;
}
}
//断开资源
System.out.println("断开连接");
br.close();
pw.close();
bufferedReader.close();
socket.close();
}
}
基于TCP协议的服务器端代码
public class TCPServer {
public static void main(String[] args) throws IOException {
//创建服务器端的socket对象,设置端口为8888,客户端连接是端口于此对应
ServerSocket serverSocket = new ServerSocket(8888);
//获取到客户端的请求
Socket socket = serverSocket.accept();
System.out.println(socket.getInetAddress()+"已经连接");
//与客户端对应的获取输入流与输出流,用来获取客户端的数据并向客户端发送数据
BufferedReader br =new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream(),true);
String string = "";
while ((string=br.readLine())!=null){
System.out.println("Clin say: "+string);
//读取一行数据输出到屏幕并转换为大写发送给客户端
pw.println(string.toUpperCase());
if ("over".equalsIgnoreCase(string))
break;
}
//释放资源
System.out.println("连接断开");
pw.close();
br.close();
socket.close();
}
}
以上是基于TCP协议的网络编程代码