Java:TCP网络编程原理及应用

Java:TCP网络编程原理及应用
一、服务器端Server:
1.创建一个ServerSocket对象,并指定一个系统端口号(不冲突即可)。
2.使用ServerSocket对象的accept()方法,等待客户的socket请求;并获得该socket对象。
3.通过socket对象的getInputstream()方法,取得socket对象中的网络字节输入流,并创建一个InputStream对象。
4.使用InputStream对象的.read方法读取用户发送的数据。可创建byte数组提高读取效率。
5.使用Socket对象的gteOutputStream方法创建网络字节输出流,Outputstream对象。
6.使用OutputStream对象的.write方法给客户回写数据。
7.释放资源:关闭socket, 关闭server。
二、客户端:Client
1、创建一个Socket请求对象,并绑定服务器的IP和端口号(一服务器一致);
2、使用socket对象的.getOutputStream方法创建一个网络字节输出流的OutputStream对象。
3、使用该OutputStreamc对象的.write写入方法,给服务发送数据。(对象.getbytes方法可以转换成字节)
4、接收数据的方法如下:
(1)调用Socket对象的getInputStream方法创建一个InputStream对象,用来接收服务器返回的数据流。
(2)创建数组bytes来提高读取的效率,用len来记录数组的长度;
(3)使用InputStreamc对象的.read方法来读取,服务器回传的数据。
也可以使用while循环来读取数据,判断是否等于-1;
(4)数据可以打印sout(new String(bytes,0,len))
(5)释放资源:socket.close;

package day03;

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

/** 服务器端:
 *TCP编程练习:接收客户端上传的文字 :你好服务器,返回:服务器收了
 */
public class TcpServer01 {
    public static void main(String[] args) throws IOException {
        ServerSocket server= new ServerSocket(8981);
        Socket socket = server.accept();
        InputStream sin = socket.getInputStream();
        byte[] bytes=new byte[1024];
        int len=0;
        len=sin.read(bytes); //读取并返回一个数组对象bytes
        System.out.println(new String(bytes,0,len));
        //返回数据编写
        OutputStream sou = socket.getOutputStream();
        sou.write("服务器收到了消息!".getBytes());
        sou.close();
        server.close();
    }
}
客户端:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
 * @author hutao
 * @date 2019/11/28 11:12  TCP编程练习:接收客户端上传的文字 :你好服务器,返回:服务器收了
 */
public class TcpClientDemo01 {
    public static void main(String[] args) throws IOException {
        Socket socket=new Socket("127.0.0.1",8981);
        OutputStream cou = socket.getOutputStream();
        cou.write("你好服务器!我请求连接你".getBytes());

        //以下是接收数据
        InputStream cin = socket.getInputStream();
        byte[] bytes=new byte[1024];
        int len=0;
        len=cin.read(bytes);
        System.out.println(new String(bytes,0,len));
        socket.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值