TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。
java利用Socket与ServerSocket来实现TCP数据的传输;
ServerSocket:此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果
Socket:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点
一、客户端代码步骤:
1、构建Socket对象:
Socket s = new Socket(InetAddress.getLocalHost(), 10005);
参数a、要连接的ServerSocket的服务器网络地址
b、要连接的端口号
2、获取输出流向服务器端发送数据
OutputStream out = s.getOutputStream();
<span style="white-space:pre"> </span>out.write("haha".getBytes());
二、服务端代码步骤:
1、构建ServerSocket对象:
ServerSocket ss = new ServerSocket(10005);
2、等待客户端的连接:
Socket socket = ss.accept();
示:客户端简单例子:
public static void Send() {
try {
Socket s = new Socket(InetAddress.getLocalHost(), 11112);//创建Socket对象
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));//获取键盘存入
//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);//向服务器端发送数据的流
String line = null;
BufferedReader in = new BufferedReader(new InputStreamReader(
s.getInputStream()));//读取服务器端的数据流
while ((line = br.readLine()) != null) {
if ("over".equals(line)) {
break;
}
//bw.write(line);
//bw.newLine();
//bw.flush();
pw.println(line);
System.out.println(in.readLine());
}
br.close();
s.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
示:服务器端的简单例子
public static void rece() {
try {
ServerSocket ss = new ServerSocket(11112);//创建ServerSocket并监听11112端口
Socket s = ss.accept();//接受客户端连接,如果要连接多个可用while(true)并开起线程管理
System.out.println(s.getInetAddress().getHostAddress()+"上线了");
BufferedReader br = new BufferedReader(new InputStreamReader(
s.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream());
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
//pw.println(line.toUpperCase());
bw.write(line.toUpperCase());
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}