zoukankan      html  css  js  c++  java
  • java网络编程—TCP(1)

    演示tcp的传输的客户端和服务端的互访。

    需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息。


    客户端:
    1,建立socket服务。指定要连接主机和端口。
    2,获取socket流中的输出流。将数据写到该流中。通过网络发送给服务端。
    3,获取socket流中的输入流,将服务端反馈的数据获取到,并打印。
    4,关闭客户端资源。

     

    服务端:
    1,建立服务端的socket服务。ServerSocket();并监听一个端口。
    2,获取连接过来的客户端对象。通过ServerSokcet的 accept方法。没有连接就会等,所以这个方法阻塞式的。
    3,客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。并打印在控制台。

    4,获取socket流中的输出流。将数据写到该流中。通过网络发送给客户端。

    5,关闭服务端。(可选)

     

     

    代码如下:

    客户端代码如下:

    package com.package4;
    /*
     * author:ywq
     */
    import java.net.*;
    import java.io.*;
    
    public class TcpClient {
    
    	public static void main(String[] args)throws Exception {
    		//创建客户端的socket服务。指定目的主机和端口
          Socket s=new Socket("127.0.0.1",1456);
          
        //为了发送数据,应该获取socket流中的输出流。
          OutputStream out=s.getOutputStream();
          
          //发送数据
          out.write("我是客户端,这是给你发的".getBytes());
          
          //设置一个字节数组,用来存放收到的服务器反馈
    	  byte[] buf=new byte[1024];
          
    	  //得到socket中的输入流
    	  InputStream in=s.getInputStream();
      
    	  //将输入流写入到buf数组中
    	  int len=in.read(buf);
    	  
    	  //创建字符串
    	  String info=new String(buf,0,len);
    		
    		System.out.println(info);
          
    		//关闭socket
          s.close();
    		
    	}
    
    }
    


     服务器端代码如下:

    package com.package4;
    
    /*
     * author:ywq
     */
    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 Exception{
    		
    		//创建服务器的socket,并且监听某个端口
    		ServerSocket ss=new ServerSocket(1456);
    		
    		while(true)
    		{
    			//利用accept方法来获取连接到的客户端对象
    			Socket s=ss.accept();
    			
    			//得到并且打印客户端的ip
    			String ip=s.getInetAddress().getHostAddress();
    			System.out.println(ip);
    		    
    			//得到socket输入流
    			InputStream in=s.getInputStream();
    			
    			//设置一个字节数组,用来存放收到的客户端数据
    			byte[] buf=new byte[1024];
    			
    			 //将输入流写入到buf数组中
    			int len=in.read(buf);
    			
    			String info=new String(buf,0,len);
    			
    			System.out.println(info);
    			
    			//为了发送数据,应该获取socket流中的输出流。
    			OutputStream out=s.getOutputStream();
    		     //发送数据
    		    out.write("我是服务器,这是给你的".getBytes());
    			
    			s.close();
    		}
    		
    		
    		
    	}
    
    }
    


     


     

     

  • 相关阅读:
    gRPC错误码 http状态码 provide your APIs in both gRPC and RESTful style at the same time
    rust
    lz4 1
    剖析美团内部所采用的网站压力测试方案
    【NOIP2002提高组T4】矩形覆盖-DFS剪枝
    【NOIP2002提高组T4】矩形覆盖-DFS剪枝
    【POJ2777】Count Color-线段树区间更新
    【POJ2777】Count Color-线段树区间更新
    【NOIP2005提高组T3】篝火晚会-置换群
    【NOIP2005提高组T3】篝火晚会-置换群
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467322.html
Copyright © 2011-2022 走看看