Java网络通讯之tcp的基本代码框架

        之前在学习的过程中,一路学,却很少做总结,接下来的几天里,我将会整理一些自己曾经学过的技术。首先是Java的网络编程,我这也算是抛砖引玉,欢迎各位大神指出不足。

       首先简单介绍一下相关的术语,主机(Host),就是一台电脑,特指连接网络的电脑;服务器(Server),指的是提供服务的主机或者程序;客户端(Client),请求服务的主机或者程序;服务(Serverice),顾名思义,就是一种服务,例如,客户端请求下载一个文件,服务器提供返回这个文件的数据,则称为“文件下载服务器”。

       IP:服务器的主机地址 x.x.x.x 格式,端口:服务号,界于 1 ~ 65535 之间。简单来说:IP地址用于标识一台主机,而端口用于标识该主机上的一个服务。这些网络通信的基本术语,接下来就是第一个简单通讯例子:

      1、首先是服务器端代码

package my;

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

public class MyServer 
{

	public static void main(String[] args) throws IOException 
	{
		// TODO Auto-generated method stub
		//建立服务器,服务于2019端口
		ServerSocket serverSock = new ServerSocket(2019);
		System.out.println("服务器启动,等待连接...");
		while(true)
		{
			//监听请求,阻塞等待,直到有客户端发起连接...
			Socket conn = serverSock.accept();
			
			//从连接里得到输入输出流
			//InputStream:可以读取客户端发来的数据
			//OutputStream:可以发送数据给客户端
			InputStream inputStream = conn.getInputStream();
			OutputStream outputStream = conn.getOutputStream();
			
			//接收数据
			byte[] inputData = new byte[4000];
			int n = inputStream.read(inputData);
			if(n <= 0)
			{
				conn.close();
				continue;
			}
			//发送数据
			String inputMsg = new String(inputData , 0 , n , "UTF-8");
			System.out.println("GOT:" + inputMsg);
			String outputMsg = "Welcome!";
			byte[] ouputData = outputMsg.getBytes();
			outputStream.write(ouputData);
			System.out.println("ECHO:" + outputMsg + "\n");
			
			//关闭连接
			conn.close();
		}

	}

}

2、客户端的代码

package my;

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

public class MyClient
{
	public static void main(String[] args) throws IOException
	{
		//一个Scoket代表一路连接
		Socket sock = new Socket();
		//连接至服务器
		sock.connect(new InetSocketAddress("127.0.0.1" , 2019));
		//InputStream用于接收数据,OutputStreet用于发送数据
		InputStream inputStream = sock.getInputStream();
		OutputStream outputStream = sock.getOutputStream();
		
		//发送数据
		String outputMsg = "Hello";
		byte[] outputData = outputMsg.getBytes("UTF-8");
		outputStream.write(outputData);
		System.out.println(">>" + outputMsg);
		
		//接收数据
		byte[] inputData = new byte[4000];
		int n = inputStream.read(inputData);
		String inputMsg = new String(inputData , 0 , n , "UTF-8");
		System.out.println("<<" + inputMsg);
		
		//关闭连接
		sock.close();
	}

}

以上代码是Java网络编程简单代码框架,接下来的学习中都会根据以上的代码进行学习与改进。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AndyWei147

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值