
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
import javaioPrintWriter;
import javanetSocket;
import javautilScanner;
import orgapachelog4jLogger;
import comsitinspringserverResponseThread;
/
Socket客户端
@author: sitinspring(junglesong@gmailcom)
@date: 2007-11-16
/
public class SocketClient{
private static Logger logger = LoggergetLogger(ResponseThreadclass);
public static void main(String[] args){
try {
Socket socket=new Socket("127001",2009);
loggerinfo("客户端向服务器发起请求");
try {
InputStream inStream = socketgetInputStream();
OutputStream outStream = socketgetOutputStream();
Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream);
outprintln("地震高岗 一派溪山千古秀");
outflush();
while (inhasNextLine()) {
String line = innextLine();
loggerinfo("客户端获得响应文字="+ line);
}
} finally {
socketclose();
}
} catch (IOException ex) {
exprintStackTrace();
}
}
}
//Member
import javautilComparator;
public class Member implements Comparable {
private String name;
private int age;
public Member(String name, int age) {
thisname = name;
thisage = age;
}
public int compareTo(Object obj) {
Member another = (Member) obj;
//return thisnamecompareTo(anothername);
return thisage-anotherage;
}
public String toString(){
return "Member name="+name+" age="+age;
}
}
//Main
import javautilArrays;
import javautilList;
public class Main{
public static void main(String[] args){
String[] arr={"Andy","Bill","Cindy","Dell"};
List<String> ls=ArraysasList(arr);
for(String str:ls){
Systemoutprintln(str);
}
/List<String> ls=new ArrayList<String>();
lsadd("Felex");
lsadd("Gates");
lsadd("Andy");
lsadd("Bill");
lsadd("Cindy");
lsadd("Dell");
Object[] arr=lstoArray();
for(Object obj:arr){
Systemoutprintln((Object)obj);
}/
/Collectionssort(ls);
for(Member member:ls){
Systemoutprintln(member);
}/
/Member member=new Member("Edin",28);
lsremove(member);
lsremove(2);
lsclear();
List ls2=new ArrayList();/
/for(Member member:ls){
// member
}/
/for(int i=0;i<lssize();i++){
Member member=lsget(i);
}/
/for(Iterator it=lsiterator();ithasNext();){
Member member=(Member)itnext();
}
List<Member> ls2=new ArrayList<Member>();
ls2add(new Member("Felex",21));
ls2add(new Member("Gates",23));
lsaddAll(ls2);
ls2/
/List ls3=null;
Systemoutprintln(ls3isEmpty());/
/List ls3=null;
Systemoutprintln(ls2isEmpty());/
/ls
lsindexOf(o)
lscontains(o)/
//ls2add(1);
}
}
//ResponseThread 这个是server的先启动client(服务器)再启动它。上面三个类是client放在一个文件夹中
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
import javaioPrintWriter;
import javanetServerSocket;
import javanetSocket;
import javautilScanner;
import orgapachelog4jLogger;
/
响应线程,建立ServerSocket响应客户端Socket请求
@author: sitinspring(junglesong@gmailcom)
@date: 2007-11-16
/
public class ResponseThread implements Runnable {
private static Logger logger = LoggergetLogger(ResponseThreadclass);
// 用于与客户端通信的Socket
private Socket incomingSocket;
public ResponseThread(Socket incomingSocket) {
thisincomingSocket = incomingSocket;
}
public void run() {
try {
try {
// 输入流
InputStream inStream = incomingSocketgetInputStream();
// 输出流
OutputStream outStream = incomingSocketgetOutputStream();
Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream,true);
while (inhasNextLine()) {
String line = innextLine();
loggerinfo("从客户端获得文字:"+line);
String responseLine=line+" 门朝大海 三河合水万年流";
outprintln(responseLine);
loggerinfo("向客户端送出文字:"+responseLine);
}
} finally {
incomingSocketclose();
}
} catch (IOException ex) {
exprintStackTrace();
}
}
public static void main(String[] args) {
try {
ServerSocket socket=new ServerSocket(2009);
loggerinfo("开始监听");
while(true){
Socket incomingSocket=socketaccept();
loggerinfo("获得来自"+incomingSocketgetInetAddress()+"的请求");
ResponseThread responseThread=new ResponseThread(incomingSocket);
Thread thread=new Thread(responseThread);
threadstart();
}
} catch (IOException ex) {
exprintStackTrace();
}
}
}
RS485如何实现多台rs485通讯:
RS485采用差分信号负逻辑,+2V~+6V表示“0”,- 6V~- 2V表示“1”。RS485有两线制和四线制两种接线,四线制是全双工通讯方式,两线制是半双工通讯方式。
RS485和RS232一样都是基于串口的通讯接口,数据收发的 *** 作是一致的,所以使用的是同样WinCE的底层驱动程序。但是它们在实际应用中通讯模式却有着很大的区别,RS232接口为全双工数据通讯模式,而RS485接口为半双工数据通讯模式,数据的收发不能同时进行,为了保证数据收发的不冲突,硬件上是通过方向切换来实现的,相应也要求软件上必须将收发的过程严格地分开。
RS485接口组成的半双工网络,一般是两线制(以前有四线制接法,只能实现点对点的通信方式,现很少采用),多采用屏蔽双绞线传输。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。
为何RS485要实现多主机控制呢?
RS485采用的单双工工作模式,为了防止总线上的竞争一般都只能有一台主机,并采用一次主机询问,一次从机应答方式。但是有的时候,我们确实需要多台主机去监控RS485设备,比如需要三台电脑都可以监控相同的几个RS485设备,而且最好共用RS485总线。这个问题虽然在实际中经常碰到,但是没有很好的解决。其难点在于,2台主机是完全独立的,那么它们没有协调机制,如果2台主机同时询问从设备,那么必然引起RS485总线上的数据冲突。
HighTek串口服务器有哪些优势呢?
116年的经验积累,方案成熟,产品稳定;
2多年合作伙伴:华为、富士康、捷顺、达实等;
3可以实现6台主机控制RS485设备;
4AES加密功能(可选),使用户的数据得到可靠的安全保障;
5采用透明传输的方式,用户不用知道复杂的TCP/IP协议;
6直观的中文菜单设置界面,使安装配置更加简单;
HighTek专业生产串口服务器、USB串口线、RS23转RS485、RS232转RS422、RS485信号放大器等串口通讯设备,
两个(Client和Server模式)点对点透传RS232/RS485数据模式
MOXA串口服务器基本要点:
使用TCP/IP通讯协议,需要2个串口服务器配对使用。
将串口服务器A设置为Server模式(出厂默认模式),另一个串口服务器B设置为Client模式。
将串口服务器B要连接的远程主机地址和端口,设置为A的IP地址和监听端口,即可完成配对。
RS232/RS485<->串口服务器A(Client)<-以太网->串口服务器B(Server)<->RS232/RS485
串口通讯参数:
由本地配置参数决定串口参数,串口服务器之间不支持串口参数同步功能。
点对点透传模式配置步骤 :
1、 串口服务器出厂默认设置:
IP地址:192168192100
工作模式:Server
串口TCP/IP映射
串口A:监听在192168192100:6020
串口B:监听在192168192100:6021
以此类推
一个串口服务器使用上述默认设置即可,也可以根据需要修改IP地址,但是建议不要修改其他参数。
另一个,需要按照下面的方法设置成Client模式。
2、 进入管理菜单,选择“G”进入“G-全局网络配置”,在“请输入IP地址(192168192100):192168192101”时,指定一个有效的IP地址,此地址不能与其他设备重复,并且可以访问到Server模式的串口服务器。这里指定为“192168192101”。
3、 选择“W”键,进入选择工作模式选单,选择“2-Client模式”
4、 选择“R”键,重新启动串口服务器,使设置生效。
5、 重新启动后,串口服务器工作在Client模式,设置为:
IP地址:192168192101
工作模式:Client
串口TCP/IP映射
串口A:主动连接192168192100:6020
串口B:主动连接192168192100:6021
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)