java网络编程

本文介绍如何使用 Java 的 TCP 协议实现客户端与服务器之间的数据传输。具体包括客户端发送小写字符串到服务器,服务器接收并转换为大写后回传。文章详细展示了客户端和服务端的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络编程中,IP地址是一个唯一标识通过这个唯一标识能够在网络上找到与之对应的主机。对于网络编程中常常要使用到的IP地址,java把它封装成了一个类-InetAddress。这个类中封装了许多对IP的操作,如getAddress(),getByName()等

UDP 1、不需要建立连接

2、因为无连接所以是不可靠协议

3、将数据及源和目的封装成数据包

4、每次数据包的大小限制在64K内

TCP 1、通过三次握手建立连接,是可靠协议

2、建立连接形成传输数据的通道

3、在连接中完成大量数据传输

4、由于必须要建立连接所以效率稍低

 

利用TCP连接实现 客户端输入数据服务器端将其转成大写再返回给客户端

TCP客户端建立

 

public class TcpClient{
	public static void main(String[] args){
		try {
			Socket s=new Socket(InetAddress.getLocalHost(),10000);//获得本机地址 并设置端口号
			//得到客户端Socket的输入流  操作字符转为字符流
			BufferedReader bufr=new BufferedReader(new InputStreamReader(s.getInputStream()));
			//得到客户端Socket的输出流
			BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
			//获取键盘录入
			BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
			//定义变量 判断获取的数据  判空
			String line=null;
			while((line=br.readLine())!=null){
				if(line.trim().equals("1")){
					System.out.println("结束");
					break;
				}
			//将键盘录入 写入Socket输出流
			bufw.write(line);
			//写入一空行 用于判断输入结束
			bufw.newLine();
			//刷新缓冲流 将数据写出
			bufw.flush();
			//调用Socket输入流读取有服务器传来的数据
			String str= bufr.readLine();
			System.out.println("+str);
			}
			bufw.close();
			bufr.close();
		} catch (Exception e) {
			throw new RuntimeException("客户端异常");
		}
	}
}

TCP服务端

 

 

class TcpServer implements Runnable{
	public void run(){
		try {
			//得到服务器端ServerSocket 并设置监听端口
			ServerSocket ss=new ServerSocket(10000);
			//获取连接的客户端Socket对象
			Socket clients=ss.accept();
			String ip=clients.getInetAddress().getHostAddress();
			System.out.println("服务端IP:"+ip);
			//得到客户端Socket对象的输入流  操作字符转为字符流
			BufferedReader bufr=new BufferedReader(new InputStreamReader(clients.getInputStream()));
			//得到客户端Socket对象的输出流
			BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(clients.getOutputStream()));
		    String line=null;
			while((line=bufr.readLine())!=null){
				String s=line.UpperCase();
				//将数据写入客户端Socket对象的输出流
				bufw.write(s);
				//刷新并添加新行
				bufw.newLine();
				bufw.flush();
			}
			//关闭流
			clients.close();
			ss.close();
		} catch (Exception e) {
			throw new RuntimeException("服务器端异常");
		}
	}
}

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值