通信学了就会知道他其实就是客户端与服务器之间的连接,关键代码也就是:
创建一个服务器,在创建与之对应的客户端。
代码示例:
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();
}
}
分享到:
相关推荐
关于CP1H变频器通信小结.pdf
简单的群聊实现 博文链接:https://hnulanwei.iteye.com/blog/2219591
串口通讯原理的学习小结,适合初学者,可以当做学习资料看一看。
2.信号(Signal) 参考《Unix进程与进程通信》 3.消息队列 参考《linux下的消息队列编程》 4.共享内存 5.信号量(semaphore) 6.套接口(Socket) 各种手段的详细说明请参考《unix进程通信+》 我们主要对共享...
通信实训小结.pdf
2019年通信广场营业员个人小结.doc
通信广场营业员工作小结页.pdf
通信广场营业员精编工作小结.rar
通信广场营业员精编工作小结.pdf
2019年通信广场营业员个人工作小结.doc
《通信专业实务:传输与接入》依据《全国通信专业技术人员职业水平考试大纲》要求编写。全书分为有线传输与接入和无线传输与接入两部分。有线传输与接入部分的内容包括:光纤通信基础知识、sdh技术、dwdm传输技术、...
Linux进程通信:命名管道FIFO小结.doc
2019年通信公司人力资源部主任个人小结.doc
现代通信技术报告,关于程控交换机和移动通信切换
在项目实践中总结的一些要点,其中有些也是通信行业SOCKET通信程序设计的不成文标准。专门开发以电信业务为核心的通信类软件,所以本人在这方面是相当有经验的,其中许多的经验已经成为“定式”
本章知识点小结 第二章 信道与噪声 2.1 信道的基本概念 2.2 恒参信道及其对所传信 号的影响 2.3 随参信道及其对所传信 号的影响 2.4 信道的加性噪声 2.5 通信中的常见噪声 2.6 信道...
介绍移动通信原理,供广大通信专业人员学习
第二代移动通信系统 --- 2G:数字系统 基本特征:数字技术、数字处理电路SIM卡,手机体积小质量轻、 大容量,TDMA/FDD, CDMA/FDD; 主流标准:GSM,NADC(IS-136),PDC(TDMA); IS-95(CDMA) ; 第三代移动通信系统 -...