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();
		}
		
		
		
	}

}


 


 

 

原文地址:https://www.cnblogs.com/lanzhi/p/6467322.html