`
李媛媛liyuanyuan
  • 浏览: 15525 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

通信小结

阅读更多
通信学了就会知道他其实就是客户端与服务器之间的连接,关键代码也就是:
创建一个服务器,在创建与之对应的客户端。
代码示例:
1.服务器方:
1.创建一个绑定端口的服务器
ServerSocket server = new ServerSocket(2012);
2.等待客户端的接入
Socket client = server.accept();
2.客户端方:创建一个客户端
Socket client = new Socket("",2012);//引号中填入你想连接机子的IP地址。
其次就是注意我们使用的流对象
流对象是我们通过client对象获取的
代码://获取输入输出流对象
OutputStream ous = client.getOutputStream();
IntputStream ins = client.getInputStream();
注意:如果一方使用了其他的流对象(如:数据流对象)另一方也要使用与之对应的流对象。
其实,就我目前了解,实现通信的关键就是以上,对了,在使用流对象时,很容易阻塞,注意异常的处理就可以了。
注:客户端与服务器代码类似,可先写一方的代码,然后再copy即可。

下面我们来看一下简单网络画板的实现过程。
实现内容:
客户端可接受服务器发出的图像。

以前,我们已经实现了简单的仿XP画板,网络画板只需要我们去实现不同机器上画板的通信即可。实现两台机子的通信很简单,但是其他功能代码就要靠自己了。
也就是我们需要使你画板上的图像在我的画板上就可呈现。

具体实现过程;(在一台电脑上,以传直线为例)
1.实现一个简单的画图板
2.创建服务器,写入服务器接受和发送图像的方法
3.创建客户端,写入服务器接受和发送图像的方法
代码:
客户端方面;

画图界面:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;

import javax.swing.JFrame;

public class Draw_Frame extends JFrame {
	// 声明四个坐标变量
	private int x1, x2, y1, y2;
	// 声明一个画布
	static Graphics g;

	public void init() {
		// 窗体的属性
		this.setTitle("我的画板1.2");
		this.setSize(600, 500);
		this.setDefaultCloseOperation(3);
		BorderLayout f1 = new BorderLayout();
		this.setLayout(f1);

		this.setVisible(true);
		g = this.getGraphics();
		MouseAdapter ma = new MouseAdapter() {

			public void mousePressed(java.awt.event.MouseEvent e) {
				x1 = e.getX();
				y1 = e.getY();

			}

			public void mouseReleased(java.awt.event.MouseEvent e) {
				x2 = e.getX();
				y2 = e.getY();
				g.drawLine(x1, y1, x2, y2);
				Server.send_msg(x1, y1, x2, y2);

			}

		};

		this.addMouseListener(ma);
	}

}

客户端:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class client {
	private static Socket client;
	private static InputStream ins;
	private static OutputStream ous;

	/**
	 * 创建一个端口
	 */
	public static void createClient(int port) {
		try {
			client = new Socket("localhost", port);
			System.out.println("创建客户端成功!");
			while (true) {
				recive_msg();
			}

		} catch (UnknownHostException e) {

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private static void recive_msg() {
		try {
			ins = client.getInputStream();
			DataInputStream dis = new DataInputStream(ins);
			int x1 = dis.readInt();
			int y1 = dis.readInt();
			int x2 = dis.readInt();
			int y2 = dis.readInt();
			Draw_Frame.g.drawLine(x1, y1, x2, y2);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public static void send_msg(int x1, int y1, int x2, int y2) {
		try {
			ous = client.getOutputStream();
			DataOutputStream dos = new DataOutputStream(ous);
			dos.writeInt(x1);
			dos.writeInt(y1);
			dos.writeInt(x2);
			dos.writeInt(y2);
			System.out.println("发送成功!");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Draw_Frame df = new Draw_Frame();
		df.init();
		createClient(2012);

	}

}

服务器与客户端类似关键在:
public static void createServer(int port){
		try {
			ServerSocket server = new ServerSocket(port);
			System.out.println("创建服务器成功!");
			client = server.accept();
			System.out.println(client.getInetAddress());

			while (true) {
				recive_msg();
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}


分享到:
评论

相关推荐

    Java Socket通信小结

    Java Socket通信小结 在Java编程中,Socket通信是一种基于TCP/IP协议的网络通信方式,它允许两个应用程序之间建立可靠的、双向的数据传输连接。本文将深入探讨Java Socket通信的基础知识,以及如何通过Java实现一个...

    关于CP1H变频器通信小结.pdf

    【CP1H变频器通信小结】 本文主要围绕CP1H变频器与Modbus-RTU通信的配置和特点进行阐述。CP1H变频器是三菱电机推出的一款可编程控制器,它具备串口通信功能,可以与其他设备通过Modbus-RTU协议进行数据交换。 **...

    linux下Qt通信小结.pdf

    在Linux环境下进行Qt应用程序开发时,串口通信是一项常见的需求。Qt本身虽然没有提供专门的串口通信类,但可以通过QIODevice抽象层与其他系统接口进行交互。本文将总结作者在Linux下使用Qt进行串口通信的经验,探讨...

    串口通讯学习小结

    串口通讯学习小结 串口通讯是一种广泛应用于微控制器与计算机、外围设备之间进行数据通信的技术。串口通讯通过串行通信端口(通常称为COM口)以串行方式进行通信,可以实现点对点的通信或多点通信。这种通讯方式...

    进程通讯总结及测试

    进程间的通信(IPC,Inter-Process Communication)是操作系统中一种重要的功能,允许不同进程之间交换信息,协同工作。本文将重点讨论其中的共享内存方式。 共享内存是一种高效的数据交换机制,它允许多个进程共享...

    通信实训小结.pdf

    "通信实训小结" 通信实训小结是指在通信领域中的实习或实践活动,本文档记录了某个实习生的两周实习经历,包括了实习的内容、收获的知识、以及未来努力的方向。 一、通信实训内容 通信实训的内容涵盖了多个方面,...

    基于SIMATIC S7-300/400 服务器软件包的IEC61850通信规约快速入门

    #### 4 “IEC61850ServerLibrary“软件包通信小结 通过以上步骤,我们可以成功地将SIMATIC S7-300 PLC配置为IEC61850服务器,并通过“IEC61850ServerLibrary”软件包实现了与基于IEC61850标准的其他设备之间的通信...

    通信广场营业员精编工作小结.rar

    通信广场营业员精编工作小结.rar

    中级通信专业实务传输与接入教程章节小结

    《通信专业实务:传输与接入》是一本针对全国通信专业技术人员职业水平考试的教程,它涵盖了有线和无线传输与接入的重要技术。该书旨在帮助考生掌握通信领域的核心概念和实际应用。 首先,书中详细讲解了有线传输与...

    Delphi Socket 通信编程要点小结

    ### Delphi Socket 通信编程要点小结 #### 一、引言 在现代通信系统开发过程中,基于Delphi的Socket编程技术因其高效性与灵活性而备受青睐。本文将结合实践经验,对Delphi环境下进行Socket通信时所遇到的关键问题...

    通信广场营业员精编工作小结.pdf

    标题中的“通信广场营业员精编工作小结”暗示了这份文档主要涵盖了通信广场营业员的工作总结和经验分享,这通常涉及到与客户服务、销售技巧、业务处理效率以及个人职业素养等相关的内容。描述中提到的“展示企业形象...

    现代通信技术实验报告(程控,移动通信)

    现代通信技术报告,关于程控交换机和移动通信切换

    现代通信系统原理网络教材_

    本章知识点小结 第二章 信道与噪声 2.1 信道的基本概念 2.2 恒参信道及其对所传信 号的影响 2.3 随参信道及其对所传信 号的影响 2.4 信道的加性噪声 2.5 通信中的常见噪声 2.6 信道...

    2019年通信广场营业员个人小结.doc

    【通信广场营业员职责与挑战】 作为一名通信广场的营业员,我深知自己的职责不仅仅是销售通信产品和服务,更是代表企业形象,展现"移动人"的专业素养和热情态度。我们的工作是与客户面对面交流的"窗口",是连接企业...

    实验一 进程通信——管道和信号实验报告.doc

    本次实验是关于操作系统中的进程通信,主要涉及了进程的创建、控制、以及多种通信方式,包括信号通信和管道通信。通过实验,目的是加深对进程概念的理解,掌握并发执行的本质,并学习如何解决进程间的互斥问题。实验...

    移动通信原理.pdf

    介绍移动通信原理,供广大通信专业人员学习

    移动通信重点总结.doc

    第二代移动通信系统 --- 2G:数字系统 基本特征:数字技术、数字处理电路SIM卡,手机体积小质量轻、 大容量,TDMA/FDD, CDMA/FDD; 主流标准:GSM,NADC(IS-136),PDC(TDMA); IS-95(CDMA) ; 第三代移动通信系统 -...

Global site tag (gtag.js) - Google Analytics