TCP协议

1.TCP单向传输

1.TCP客户端操作步骤
    (1)创建客户端Socket对象
    public Socket(String host,int port)throws UnknownHostException,IOException
    (2)获取客户端所在的通道内字节输出流对象
    public OutputStream getOutputStream() throws IOException
    (3)写数据到通道的流中
    (4)释放资源
public class Tcp_Client {
    public static void main(String[] args) throws IOException {
        
        Socket socket = new Socket("10.12.156.50",10010) ;

        OutputStream outputStream = socket.getOutputStream();
        
        outputStream.write("hello,TCP,我来了".getBytes());

        socket.close() ;
    }
}
2.TCP服务端操作步骤
    (1)创建服务端ServerSocket对象
    public ServerSocket(int port)throws IOException :将指定的端口号绑定在服务器上
    (2)监听客户端连接
    public Socket accept() throws IOException :返回客户端对象
    (3)获取通道内字节输入流
    public InputStream getInputStream() throws IOException
    (4)读取通道内的数据
    (5)展示数据,释放资源
public class Tcp_Server {
    public static void main(String[] args) throws IOException {

        ServerSocket ss = new ServerSocket(10010) ;
        System.out.println("服务器正在等待连接...");

        Socket socket = ss.accept();//阻塞式方法
        System.out.println("客户端连接了...");

        InputStream inputStream = socket.getInputStream();
        
        byte[] bytes = new byte[1024] ;
        int len = inputStream.read(bytes);
        
        String msg = new String(bytes,0,len) ;

        String ip = socket.getInetAddress().getHostAddress();
        System.out.println("data form -->"+ip+"content is--->"+msg);

        ss.close();
    }
}


2.TCP双向发送

1.客户端读取一个当前项目下的文件,然后服务器端将文件复制到指定的文件中
  Tcp_Client.java---复制到D:\EE_2113\day30\code\Copy.java
2.问题: 当加入了服务器反馈的时候,发现---两端都处于互相状态
      使用字符缓冲输入流读取文件的结束条件---->null  (readLine())
      复制的源文件:Tcp_Client.java 已经读完了,但是通道内流不知道文件已经读完了,所以服务器端等待客户端通知
      文件已经完毕,同时客户端还要等待服务器端的反馈的数据!
3.解决方案:
       1)自定义一个结束条件,"over",如果服务器端读到了这句话,结束了!
       弊端:如果文件中第一句话就是"自定义标记值",直接结束了!
 
       2)客户端Socket提供 一个特有的方法
               就是通知服务器端,没有流数据过去了!
            public void shutdownOutput()throws IOException

           代码见:networking_programmin.TCPDemo1 

3.TCP实现网络聊天

真实场景:是客户端和客户端聊天,服务器端---->负责 "转发消息"
建立两个工程
		客户端工程	chatRoomClient
		服务器端工厂
		
		
		
		1)简易版:客户单不断发送数据(),服务器端不断回复数据
		客户端展示服务器回复的数据,服务器端接收客户端的发的数据()
            
            代码见:networking_programmin.TCP_net_chat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值