day24

tcp概述

服务端程序需要事先启动,等待客户端的连接。
客户端主动连接服务器。连接成功才能通信服务端不可以自动连接客户端。

客户端: java.net.Socket 类表示。创建Socket 对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。
服务端: java.net.SeverSocket 类表示。创建SeverSocket 对象相当于开启一个服务,并等待客户端的连接。

Socket 类
Socket 类: 该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。
构造方法

public Socket(String host, int port) :

如果指定的host是null, 则相当于指定地址为回送地址。
回送地址(127.x.x.x)是本机回送地址(LoopbackAddress),主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,立即返回,不进行任何网络传输。
Socket client = new Socket("127 .0.0.1”,666);

public InputStream getInputstream()
如果此Scoket具有相关联的通道,则生成的InputStream也将关闭相关的Socket。
关闭生成的InputStream也将关闭相关的Socke。
public outputStream getoutputstream(): 返回此套接字的输出流。
如果此Scoket具有相关联的通道,则生成的Outputstream的所有操作也关联该通道。
关闭生成的OutputStream也将关闭相关的Socket。
public void close() :关闭此套接字。
-旦一个socket被关闭,它不可再使用。
关闭此socket也将关闭相关的Inputstream和outputstream。
InputStpublic void shutdownoutput(): 禁用此套接字的输出流。
任何先前写出的数据将被发送,随后终止输出流。
ServerSocket类
ServerSocket类:这个类实现了服务器套接字,该对象等待通过网络的请求。

public ServerSocket(int port) :使用该构造方法在创建ServerSocket对象时, 就可以将其绑定到个指定的端口号上,参数port就是端口号。
ServerSocket server = new Server Socket (6666);
public Socket acceptO :侦听并接受连接,返回一个新的Socket对象,用于和客户端实现通信。该方法会直阻塞直到建 立连接。

TCP通信分析图解

[服务端]启动,创建ServerSocket对象,等待连接。
[客户端]启动,创建Socket对象,请求连接
[服务端]接收连接,调用accept方法,并返回一个socket对象。
[客户端] Socket对象; 获取Outputstream, 向服务端写出数据。
[服务端] Socket对象,获取Inputstream;获取客户端发送的数据。
到此,客户端向服务端发送数据成功。

server
package Demo01Tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8888);
        Socket socket = server.accept();
        InputStream is = socket.getInputStream();
        byte[] bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));
        OutputStream os = socket.getOutputStream();
        os.write("收到数据,谢谢你".getBytes());
        socket.close();
        server.close();
    }
}

client

package Demo01Tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TcpClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1",8888);
        OutputStream os = socket.getOutputStream();
        os.write("您好,服务器".getBytes());
        InputStream is = socket.getInputStream();
        byte[] bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值