JavaSE学习笔记--网络编程之TCP

 
package cn.test.socket
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/*
 客户端建立思路:
 1,建立客户端的socket服务。并明确要连接的服务端。
  因为只有建立了连接,才可以进行通讯。
  Socket s = new Socket(String IP, int port)   参数:主机名(可以用主机iP地址的文本表达形式代替)和端口
 2,如果连接建立成功,就表明,已经了数据传输的通道。就可以在该通道通过IO进行数据的读取和写入。
  该通道称为socket流,socket流中既有读取流,也有写入流。
 3,通过socket对象的方法。可以获取这两个流对象。
  getInputStream()   getOutputStream()
 4,通过流对象就可以对数据进行传输。
 5,如果传输数据完毕,关闭资源。
 */
/*
 建立服务端的思路:
 1,建立服务端的socket服务。分配一个端口,用于监听该端口收到的数据。
  ServerSocket ss = new ServerSocket(int port)   参数:端口
 2,服务端没有直接流的操作,而是通过accept方法获取客户端对象,
  在通过获取到的客户端对象的流和客户端进行通讯。
  Socket accept()
 3,通过客户端的获取流对象的方法,读取数据或者写入数据。
  getInputStream()   getOutputStream()
 4,如果服务完成,需要关闭客户端,然后关闭服务端。
  但是一般会关闭客户端,不关闭服务端,因为服务端是一值提供服务的。

 */

public class Client {

 public static void main(String[] args) throws IOException {
  // 创建客户端Socket, 连接指定服务端IP地址, 端口号; Socket类是实现客户端套接字
  Socket socket = new Socket("192.168.1.100", 9999);
  
  // 获取客户端输入输出流. 输入流可以读取服务端输出的数据, 输出流可以向服务端写出数据.
  InputStream in = socket.getInputStream();
  OutputStream out = socket.getOutputStream();

  // 接收数据. 将数据读取到buf中, len记住读取了多少个
  byte[] buf = new byte[1024];
  int len = in.read(buf); // 阻塞
  String msg = new String(buf, 0, len);
  System.out.println(msg);

  // 发送数据
  out.write("我是客户端".getBytes());

  // 释放资源
  socket.close();
 }

}

package cn.test.socket

import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /*  客户端建立思路:  1,建立客户端的socket服务。并明确要连接的服务端。   因为只有建立了连接,才可以进行通讯。   Socket s = new Socket(String IP, int port)   参数:主机名(可以用主机iP地址的文本表达形式代替)和端口  2,如果连接建立成功,就表明,已经了数据传输的通道。就可以在该通道通过IO进行数据的读取和写入。   该通道称为socket流,socket流中既有读取流,也有写入流。  3,通过socket对象的方法。可以获取这两个流对象。   getInputStream()   getOutputStream()  4,通过流对象就可以对数据进行传输。  5,如果传输数据完毕,关闭资源。  */ /*  建立服务端的思路:  1,建立服务端的socket服务。分配一个端口,用于监听该端口收到的数据。   ServerSocket ss = new ServerSocket(int port)   参数:端口  2,服务端没有直接流的操作,而是通过accept方法获取客户端对象,   在通过获取到的客户端对象的流和客户端进行通讯。   Socket accept()  3,通过客户端的获取流对象的方法,读取数据或者写入数据。   getInputStream()   getOutputStream()  4,如果服务完成,需要关闭客户端,然后关闭服务端。   但是一般会关闭客户端,不关闭服务端,因为服务端是一值提供服务的。

 */ public class Server {  public static void main(String[] args) throws IOException {   // 创建服务端ServerSocket, 指定端口; ServerSocket类是实现服务器套接字   ServerSocket serverSocket = new ServerSocket(9999);      // 接收客户端请求, 在未接收到任何请求时会阻塞. 接收到之后会得到一个Socket对象   Socket socket = serverSocket.accept();      // 获取服务端输入输出流. 输入流可以读取客户端输出数据, 输出流可以向客户端写出数据.   InputStream in = socket.getInputStream();   OutputStream out = socket.getOutputStream();      // 发送数据   out.write("你好, 你是谁啊?".getBytes());      // 接收数据   byte[] buf = new byte[1024];   int len = in.read(buf);  // 阻塞   String msg = new String(buf, 0, len);   System.out.println(msg);      // 释放资源   socket.close();   serverSocket.close();  } }

上面是通过代码的方式对网络编程中的TCP编程的总结。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值