Socket编程实现双机通信小案例

本文详细介绍了一种简单的Java Socket编程方案,适用于初学者快速掌握客户端-服务器模式下的双机通信技术。通过具体步骤和代码示例,展示了如何在两台位于同一局域网内的计算机之间建立通信。

枯燥的大学生活总是需要一些小东西去耍耍,正好帅帅在学习计算机网络,来试一下socket通信,看看在Java中套接字这玩意怎么耍,嘻嘻

网上关于实现双机通信Socket编程案例有很多,但是一个普适性的,适合新手快速上手的不多

下面介绍一种实现单方面会话的CS(Client and Server)双机通信


首先呢你需要在一台A机器下打开命令行cmd->ipconfig获取你的ipv4地址很关键oo比如说192.168.100.32

然后呢这个就作为服务器的地址咯

再打开你的IDE新建一个Javaproject,新建一个服务类我这里是Test_imply

代码如下:

package test;

import java.io.*;
import java.net.*;
import java.util.*;
public class Test_imply
{	 
	public static void main(String[] args) 
	{
		int count =0;
		try{
		
		ServerSocket server=new ServerSocket(9999);
		//打印提示信息
		System.out.println("服务器已经对9999端口进行监听……");
		//服务器循环接受客户请求
			while(true){
			Socket sc=server.accept();
			//获取当前连接的输入流,并使用处理流进行封装
			DataInputStream din=new DataInputStream(sc.getInputStream());
			//获取当前连接的输出流,并使用处理流封装
			DataOutputStream dout=new DataOutputStream(sc.getOutputStream());
			//打印客户端的信息
			System.out.println("=======================第"+(++count)+"次会话=================");
			System.out.print("客户端口号:"+sc.getInetAddress());
			System.out.println(",本地端口:"+sc.getPort());
			System.out.println("客户端信息:"+din.readUTF());
			//向客户端发送回应信息
			dout.writeUTF(sc.getInetAddress()+"您好,帅帅服务器实时时间是:"+(new Date())+".并且已经成功收到您的请求");
			//关闭流
		
			din.close();
			dout.close();
			sc.close();
			
			}
	   }
		catch(Exception e){
			e.printStackTrace();
		}
	
	}
}

然后呢运行它,起来伸个懒腰,到B机器上打开IDE(比如eclipse)新建一个Javaproject,新建一个服务类我这里是Client

代码如下:

import java.io.*;
import java.net.*;
public class Client
{
	public static void main(String[] args){
		String Serverip,Client_say;
		Serverip="192.168.100.32";//服务器ip
		Client_say="";            //客户机发来请求内容
		
		
		try{
			//创建连接到服务器的Socket对象
			
			while(!Client_said.equals("end")){
			Socket sc=new Socket(Serverip,9999);
			DataInputStream din=new DataInputStream(sc.getInputStream());//封装
			DataOutputStream dout=new DataOutputStream(sc.getOutputStream());
			
			System.out.println("连接成功,请输入:");
				BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
					Client_said=input.readLine();//获取客户机说的话
			
			dout.writeUTF(Client_said);
			System.out.println(din.readUTF());
			
			  din.close();
			  dout.close();
			  sc.close();
			  }
			
			
		}
		catch(Exception e){
			e.printStackTrace();
		}
		
	}
}

注意先别急着运行,先确认你的A,B两台机器连接在同一局域网下,确认后才运行!

下面来一波测试


还有注意一下所连服务器的ip,这是建立连接的关键哦哦!



评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值