TCP客户端和服务端的互通信息

/*
学习笔记
TCP客户端和服务端的互通信息
客户端步骤:
需求:客户端给服务端发送数据,服务端收到后给客户端反馈信息
步骤:
1.导入包 java.IO java.net 包
2.创建Socket 服务。指定要连接主机和端口
3.获取socket流中的输出流。将数据写到该流中,通过网络发送给服务端。
4.获取socket流中的输入流,将服务端反馈的数据获取到并打印。
5.获取ServerSocket服务端发过来的数据。
6.创建一个缓冲区来存储数据。
7.定义一个整型 来接收缓冲区
8.将数据打印出去。
服务端步骤:
1.导入包 java.IO java.net 包
2.创建ServerSocket服务端对象来监听一个端口。
3.创建 socket的然后通过accept方法获取连接过来的客户端对象 。
4.通过这两个方法getInetAddress().getHostAddress() 来获取IP地址 定义字符串类型来接收IP地址。
5.将获取到的IP地址打印出去。
6.获取客户端发送过来的数据 那么使用客户端对象的读取流来读取数据。
7.创建一个字节数组作为缓冲区来存储数据 因为知道数据不是很大所以定义[1024]就可以用了。
8.获取客户端发送过来的数据 那么使用客户端对象的读取流的方法:getInputStream()来读取数据。
9.将数据写入出去,定义一个整类类型来接收。
10.然后将数据打印出去。
11.负责给客户端反馈信息的,所以必须用的客户端的输出流,通过这个方法来获取getOutputStream();
12.然后给客户端回馈信息,通过这个write();的这个方法将数据发送出去,将数据信息变成字符串形式发出去!
13.关闭资源(可选择操作)
时间:2018-8-17
作者:无痕公子
*/
package tCP;
import java.io.*;
import java.net.*;

//客户端
public class Client
{

public static void main(String[] args) throws Exception
{
    Socket s = new Socket("IP地址",10012);

    OutputStream out =  s.getOutputStream();

    out.write("给服务端 发送的信息=您好!".getBytes());

    InputStream in = s.getInputStream();

    byte[] buf = new byte[1024];

    int len =in.read(buf);

    System.out.println(new String(buf,0,len));

    s.close();

}

}
class Serverside
{

public static void main(String[] args) throws Exception
{

    ServerSocket ss = new ServerSocket(10012);

    Socket s = ss.accept();

    String iP =s.getInetAddress().getHostAddress();

    System.out.println("IP="+iP);

    InputStream in = s.getInputStream();

    byte[] buf = new byte[1024];

    int len =in.read(buf);

    System.out.println(new String(buf,0,len));


    OutputStream out = s.getOutputStream();//用的客户端的输出流

    Thread.sleep(10000);//10秒中后在发送

    out.write("给客户端回馈的信息=收到!您好".getBytes());

    ss.close();

}

}
结果图:
TCP客户端和服务端的互通信息_第1张图片
TCP客户端和服务端的互通信息_第2张图片
/*
总结:
通过以上的小例子给服务端 和客户端 建立网络通信.客户端给服务端发送信息。服务端给客户端回馈信息
发现了客户端和服务端的输入流和输出流都是反着来的!

*/

你可能感兴趣的:(TCP客户端和服务端的互通信息)