Java:网络编程值TCP的使用

演示TCP传输
 
1.Tcp分客户端和服务端
2.客服端对应的对象是scoket
   服务端对应的对象是serverscoket
 
客户端:
通过查阅scoket对象,发现在建立对象时,就可以连接指定的主机。
因为tcp是面向连接的,所以在建立scoket服务时,就要有服务端存在,并连接成功,形成通路后,在该通道进行数据的传输。
 
需求:给服务端发送一个文本数据
步骤:
    1.创建Socket服务并指定要连接的主机和端口。可以采用构造方法Socket(String host, int port)或对象方法connect(SocketAddress endpoint) 
    2.获取Sockett中的输出流,用来发送数据。方法是OutputStream getOutputStream()
    3.关闭客户端流。
//例子如下:
import java.net.*;
import java.io.*;
class TcpClient
{  
    public static void main(String[] args)throws Exception
    {
      //创建客户端的Socket服务,指定目的主机和端口     
      Socket s = new Socket("192.168.1.105",8888);
      
      //为了发送数据,应该获取Socket中的输出流, 
      OutputStream out = s.getOutputStream();
      
      out.write("tcp is coming!".getBytes());
      
      //关闭客户端流
      s.close();
    }
}

 

需求:定义端点接收数据,并打印在控制台上。
服务端:
1.建立服务端的Socket服务,构造函数ServerScoket(int port),并监听一个端口
2.获取连接过来的客服端对象,方法Socket accept() ,这个方法是阻塞式的,没有连接就等。
3.如果客服端发送过来数据,那么服务端要使用对应的客服端对象,并采用该客服端的读取流对象来读取发过来的数据。并打印在控制台。
4.关闭服务端(可选操作) 
//例子如下:
class TcpServer
{
    public static void main(String[] args)throws Exception
    {
        //建立服务端的Socket服务,并监听一个端口
        ServerSocket ss = new ServerSocket(8888);
        
        //通过accept方法获取连接过来的客服端对象
        Socket s = ss.accept();
        String IP = s.getInetAddress().getHostAddress();
        System.out.println(IP+"...connected!");        
        
        //获取客户端发送给来的数据,服务端要使用客服端对象的读取流类读取数据。方法InputStream getInputStream()  
        InputStream in = s.getInputStream();
        
        byte[] buf = new byte[1024];

        int len = in.read(buf);
                
        System.out.println(new String(buf,0,len));
        
        s.close();//关闭客户端
        
        ss.close();//关闭服务端(可选操作)
    }
}

 

posted @ 2015-10-28 22:18  XYQ全哥  阅读(159)  评论(0编辑  收藏  举报