`
coach
  • 浏览: 386776 次
  • 性别: Icon_minigender_2
  • 来自: 印度
社区版块
存档分类
最新评论

Java--Socket通信(单向单工)

    博客分类:
  • http
阅读更多
1.客户端接受服务端的消息并打印:
客户端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;


public class Client {
	private static final String IP = "localhost";//服务器地址 
	private static final int PORT = 8000;//服务器端口号  

	public static void main(String[] args) {
		handler();
	}

	private static void handler() {
		//创建一个流套接字,连接到指定主机上的指定端口号
		Socket client = null;
		try {
			while(true){
				client = new Socket(IP, PORT);
				//取得输入流
				InputStream is = client.getInputStream();
				BufferedReader br = new BufferedReader(new InputStreamReader(is));
				//读取服务器端数据 
				System.out.println(br.readLine());
				br.close();
				is.close();
			}
		}catch (Exception e) {
			System.out.println("客户端异常:" + e.getMessage()); 
		}finally{
			if(client != null){
				try {
					client.close();
				} catch (IOException e) {
					System.out.println("客户端异常:" + e.getMessage()); 
				}
			}
		}
	}
}


服务端:
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
	private static final int PORT = 8000;//监听的端口号

	public static void main(String[] args) {
		Server server = new Server();
		server.init();
	}

	private void init(){
		try {
			ServerSocket serverSocket = new ServerSocket(PORT);
			while(true){
				Socket client = serverSocket.accept();
				//一个客户端连接就开户一个线程处理
				new Thread(new HandlerThread(client)).start();
			}
		} catch (IOException e) {
			System.out.println("服务器异常:" + e.getMessage());
		}
	}

	private class HandlerThread implements Runnable{

		private Socket client;
		public HandlerThread(Socket client) {
			this.client = client;
		}

		@Override
		public void run() {
			try {
				//取得输出流
				OutputStream os = client.getOutputStream();
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
				//输入要输出给客户端的内容
				Scanner sc = new Scanner(System.in);
				bw.write(sc.nextLine());
				bw.close();
			} catch (IOException e) {
				System.out.println("服务器异常:" + e.getMessage());
			}finally{
				if(client != null){
					try {
						client.close();
					} catch (IOException e) {
						client = null;
						System.out.println("服务器异常:" + e.getMessage());
					}
				}
			}
		}
	}
}



2.服务端接受客户端的消息并打印:
客户端:
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;


public class Client {
	private static final String IP = "localhost";//服务器地址 
	private static final int PORT = 8000;//服务器端口号  

	public static void main(String[] args) {
		handler();
	}

	private static void handler() {
		//创建一个流套接字,连接到指定主机上的指定端口号
		Socket client = null;
		try {
			while(true){
				client = new Socket(IP, PORT);
				//取得输出流
				OutputStream os = client.getOutputStream();
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
				//输入要发送到服务端的消息
				Scanner sc = new Scanner(System.in);
				bw.write(sc.nextLine());
				bw.close();
				os.close();
			}
		}catch (Exception e) {
			System.out.println("客户端异常:" + e.getMessage()); 
		}finally{
			if(client != null){
				try {
					client.close();
				} catch (IOException e) {
					System.out.println("客户端异常:" + e.getMessage()); 
				}
			}
		}
	}
}


服务端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	private static final int PORT = 8000;//监听的端口号

	public static void main(String[] args) {
		Server server = new Server();
		server.init();
	}

	private void init(){
		try {
			ServerSocket serverSocket = new ServerSocket(PORT);
			while(true){
				Socket client = serverSocket.accept();
				//一个客户端连接就开户一个线程处理
				new Thread(new HandlerThread(client)).start();
			}
		} catch (IOException e) {
			System.out.println("服务器异常:" + e.getMessage());
		}
	}

	private class HandlerThread implements Runnable{

		private Socket client;
		public HandlerThread(Socket client) {
			this.client = client;
		}

		@Override
		public void run() {
			try {
				//取得输入流
				InputStream is = client.getInputStream();
				BufferedReader bw = new BufferedReader(new InputStreamReader(is));
				//读取客户端发送来的数据 
				System.out.println(bw.readLine());
				bw.close();
			} catch (IOException e) {
				System.out.println("服务器异常:" + e.getMessage());
			}finally{
				if(client != null){
					try {
						client.close();
					} catch (IOException e) {
						client = null;
						System.out.println("服务器异常:" + e.getMessage());
					}
				}
			}
		}
	}
}

分享到:
评论

相关推荐

    Java-Notes-单工半双工和全双工

    :books: Java/ :books: computer-science/Java-development/backend/interview 单工半双工和全双工 单工半双工和全双工 单工半双工和全双工 单工半双工和全双工 单工半双工和全双工

    JAVA Socket通信示例

    但是Java的标准Socket API并不直接支持这样的配置,通常需要通过编程逻辑来实现单向通信的限制。 **2. 半双工通信:** 半双工通信允许数据在两个方向上传输,但不能同时进行。在某一时刻,数据只能从一个方向流向另...

    电信设备-单工移动通信设备声控开关.zip

    这种设备主要用于单向通信,即信息只能从一个方向传输到另一个方向,不能同时双向通信。声控开关(Voice operated switch,VOS)是一种通过检测声音信号来控制通信链路开启和关闭的装置,常用于对讲机、无线电通信和...

    电子政务-单工通信无线电台的自动发射开关.zip

    首先,单工通信(Simplex Communication)是指通信双方只能在同一时间内进行单向传输的通信方式。在电子政务中,这种通信模式常用于广播通知、应急指挥或者数据传输等场景,其中一个设备或系统发送信息,其他接收...

    Socket三个循序渐进工程自作(单向通信,双向通信,双向文件传输)

    Simplex 单工通信 Full-Duplex 全双工通信 TransmitFile 双向文件传输 大文件传输过程发现接收端和发送端得到的文件大小不一致,而且收到的文件大小也在变,几个M的mp3没什么影响,但是如果是500m视频影响进度条。...

    java socket 通信程序

    Java远程消息传送器 <br>功能要求: <br>桌面窗口应用程序; <br>包括多个发送端和一个接收端; <br>多用户使用发送端通过网络连接接收端; <br>用户输入文字消息,然后发送给接收端,接收端将消息...

    python socket隧道转发,单工通信

    python socket隧道转发,单工通信

    单工通信系统的五种设计方案

    本设计方案聚焦于高频无线通信中的单工通信系统,旨在实现40MHz调频发射功能,支持短信发送以及单向通话。下面将详细阐述这五种设计方案的核心知识点。 一、无线通信基础 无线通信是通过无线电波在空气中传播信息的...

    商业编程-源码-单工语音聊天室.zip

    【标题】"商业编程-源码-单工语音聊天室.zip"揭示了这是一个与商业编程相关的项目,重点在于实现一个单工(即一方向通信)的语音聊天室的源代码。这种类型的聊天室允许用户在一个方向上传输语音,可能是从服务器到...

    MCS-51的串行通信口

    单工方式数据只能单向传输,常用于简单的数据采集和打印;半双工虽然能双向传输,但不能同时进行;全双工则允许双向同时传输,但硬件要求较高;多工方式通过复用技术在同一信道上传输多路信号,提高线路利用率。 ...

    一、单工通信(simplex) 单工通信只支持信号在一个方向上传输(正向或反向),任何时候不能改变信号的传输方向 为保证正确传

    单工半双工和全双工一、单工通信(simplex) 单工通信只支持信号在一个方向上传输(正向或反向),任何时候不能改变信号的传输方向。 为保证正确传送数据信号,接收端要对接收的数据进行校验,若校验出错,则通过...

    第部分-可编程控制通信与网络技术优秀文档.ppt

    单工通信只能单向传输,而双工通信则可以双向传输。全双工通信允许同时发送和接收,半双工则在同一时间只能做一项操作。在PLC通信中,半双工和全双工应用较为常见。 此外,串行通信还分为异步通信和同步通信。异步...

    网络工程师培训------------通信基础

    9. **传输模式**:通信可以通过串行或并行方式传输,单工、半双工和全双工是常见的通信模式,影响数据传输的方向和效率。 10. **傅立叶分析与尼奎斯特定理**: - 傅立叶分析:任何周期信号都可以表示为无限个正弦...

    嵌入式开发小软件---串口通信

    嵌入式开发小软件实用嵌入式开发小软件实用嵌入式开发小软件实用嵌入式开发小软件实用嵌入式开发小软件实用

    第8章---串行通信基础理论.ppt

    单工通信只能单向传输,半双工可以在两个方向上传输但非同时,全双工则支持双向同时传输。在实际应用中,为了实现模拟信号和数字信号的转换,常常使用调制解调器(MODEM)。 单片机中的串行口是实现串行通信的关键...

    基于 OPNET 的单工无线通信仿真研究

    ### 基于OPNET的单工无线通信仿真研究 #### 概述 单工无线通信,作为一种重要的无线通信方式,广泛应用于特定部门和社会领域的指挥调度系统,如民航、铁路、公安、防汛、防火等,以及电力、银行、学校、酒店、宾馆...

    模拟单工通信系统-北京交通大学电子系统课程设计-毕业论文.doc

    本报告总结了模拟单工通信系统的设计和实现,旨在实现话音信号和遥控信号在模拟信道中的单向通信。该系统由发射机、模拟信道和接收机三部分组成,系统设计包括设计任务要求、设计方案及论证、制作及调试过程、系统...

    电信设备-使双向通信装置进行单向接收器工作的方法及其装置.zip

    本话题主要聚焦于“使双向通信装置进行单向接收器工作的方法及其装置”,这通常涉及到在特定情况下优化通信效率或保障信息安全的策略。 首先,我们需要理解双向通信的基本原理。双向通信是指两个或多个通信节点之间...

    HPSocket TCP通信中间件

    它支持多种通信模式,如单工、半双工和全双工,满足不同应用场景的需求。此外,HPSocket还具备多线程处理能力,能有效利用多核处理器资源,提高并发处理性能。 在HPSocket中,TCP服务器负责接收客户端连接,并处理...

Global site tag (gtag.js) - Google Analytics