Q1:
When I have a GRPC connection with one server(S) and several clients(C1 and C2)(Using Response-streaming RPC).
I wonder how frames S sends to C1 and C2?
For example, there's 10 frames that server needs to response. What will C1 and C2 receive separately and Why?

C1 gets 5 frames and C2 gets another 5(I tried my program and seems it acts like this way)
C1 gets all 10 frames C2 gets the same all 10 copies.

And is there a way to choose from 1 or 2?
Q2:
a GRPC connection with only one server(S) and only one client(C) this time(Using Response-streaming RPC still).
I forcely stop C(i.e. ctrl+c) and restart the program(C_second).But this time C_second still only gets parts of frames that S sends.
Seems the connection between S and C(forcely stopped) still be alive?
gRPC is point-to-point. The connection C1 -> S and C2 -> S are separate. Any message that S sends will be directed at either C1 or C2. If duplication is required between clients, the server application logic will need to manage this itself.

Great question. This is a point that people often miss in designing their protocol. gRPC itself is stateless. If a channel dies, the client will not attempt to download previously sent messages. Instead, the RPC needs to be made idempotent or stateful. That is, if checkpointing needs to happen in a streaming API, the application needs to manage that itself.
GRPC with one server and several clients