1、易语言服务器如何监听客户端口
可以考虑用JAVA实现监听客户端口,参考例子如下:
package test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
/**
* 该程序用的DatagramSocket,实现UDP的通讯
* @author D'Addario
*
*/
public class Test{
private int headLen = 12;//消息起点和终点的记录 例如classAclassB就是发往classA的消息,发送者是classB
private Random random;
private String serverIp;
private int serverPort;
private HashMap<String,Classes> map ;
{
serverIp = "127.0.0.1";
serverPort = 9999;
random = new Random(System.currentTimeMillis());
map = new HashMap<String,Classes>();
Classes A = Test.this.new Classes();
A.ip = "127.0.0.1";
A.name = "我是A";
A.port = 10000;
map.put("classA", A);
Classes B = Test.this.new Classes();
B.ip = "127.0.0.1";
B.name = "我是B";
B.port = 10001;
map.put("classB", B);
}
public static void main(String[] a) throws Exception{
Test test = new Test();
new Thread(test.new Server()).start();
Client client1 = test.new Client();
client1.mine = "classA";
client1.remote = "classB";
new Thread(client1).start();
Client client2 = test.new Client();
client2.mine = "classB";
client2.remote = "classA";
new Thread(client2).start();
}
/**
* 成员 用于记录 每个成员的个性信息
* @author D'Addario
*
*/
private class Classes {
private String name ; //成员姓名
private String ip ; //成员ip
private int port;//成员的client server 监听端口
}
/**
* server 用于转发两个client之间消息的类
* @author D'Addario
*
*/
private class Server implements Runnable{
public void run() {
// TODO Auto-generated method stub
boolean start = false;
DatagramSocket socket = null;
try {
socket = new DatagramSocket(serverPort);
start = true;
} catch (SocketException e1) {
e1.printStackTrace();
}
while(start)
{
try {
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data,data.length);
socket.receive(packet);
int len = packet.getLength();
//System.out.println("recevie data:"+new String(data,0,len));
if(len<headLen)
throw new IOException("无效数据");
String id = new String(data,0,headLen/2);//获取发往对象的ID
String id2 = new String(data,headLen/2,headLen/2);
System.out.println("receive from "+id2 +", send to "+id+",msg["+new String(data,headLen,len-headLen)+"]");
Classes one = map.get(id.trim());
DatagramPacket retPack = new DatagramPacket(data,0,len,InetAddress.getByName(one.ip),one.port);
socket.send(retPack);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* Client 客户端类,用于客户端消息的发送
* @author D'Addario
*
*/
private class Client implements Runnable{
private String mine;
private String remote;
public void run() {
// TODO Auto-generated method stub
String msg = remote+mine;
DatagramSocket socket = null;
try {
socket = new DatagramSocket(map.get(mine).port);
ClientServer srv=new ClientServer();
srv.setSocket(socket);
new Thread(srv).start();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] data ;
while(true)
{
String sendStr = msg + "给我"+random.nextInt(5000)+"分吧";
data = sendStr.getBytes();
try {
DatagramPacket retPack = new DatagramPacket(data,0,data.length,InetAddress.getByName(serverIp),serverPort);
socket.send(retPack);
Thread.sleep(random.nextInt(5)*1000);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 客户端server 用于监听服务器的消息
* @author D'Addario
*
*/
private class ClientServer implements Runnable{
DatagramSocket socket ;
public DatagramSocket getSocket() {
return socket;
}
public void setSocket(DatagramSocket socket) {
this.socket = socket;
}
public void run() {
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data,data.length);
while(true){
try {
socket.receive(packet);
int len = packet.getLength();
if(len<headLen)
throw new IOException("无效数据");
System.out.println("I get the message :"+Thread.currentThread().getId()+"-->["+new String(data,0,len)+"]");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
}
}
2、服务器监听端口号起什么作用
服务器端口号 ,是服务器监听客户端用的 ,相当于"地址" ,是服务器与客户端间的纽带 .
举个例子:你登陆QQ ,你把你的用户名和密码输入后,点击"登陆" ,此时,客户端就会把你的密码和用户名发送到该端口的端口号.然后服务器经过到数据库验证,如果正确,就会把正确的信息发给你的客户端(就是你 的电脑) .
端口有好多,电脑中有9000多个已经规定好的端口,还有好多自己定义的端口,8000 ,10000
不懂的还可以找我
[email protected]
3、如何让客户端监听服务器
长链接就可以了。连上去以后onaccept就可以接收到服务端的onsend
4、监听服务器的概念是什么啊??
时刻与服务器保持联系 做好准备
当服务器挂掉 马上会有反应
5、java如何实现在服务器开一个监听,如果客户
1. className 此Valve 实现的Java 类名
2. debug 调试等级,0 表示不调试,而正数则表示不同程度的调试等级,数字愈高,显示的调试信息就愈详细。默认值是0
3. escapeQuotes 在执行请求前,决定此Valve 是否要转义请求消息中的任何引号(包括双及单引号)。默认值为false
4. escapeAngleBrackets 在执行请求前,决定此Valve 是否要转义请求消息中的任何尖括号。默认值为false
5. escapeJavaScript 决定此Valve是否要转义请求消息中任何对JavaScript函数与对象的可能有危险的引用。默认值为false
6. allow 此Valve 允许的正则表示式清单,以逗号分隔 [可选]
7. deny 此Valve 禁止的正则表示式清单,以逗号分隔 [可选]
6、如何查看远程服务器的监听服务监听了哪些数据库服务?
lsnrctl status <服务器地址如: lsnrctl status 192.168.0.126如果远程服务器监听的是其它端口,那需要在本机的对远程服务器监听的连接配置,具体做法是有$ORACLE_HOME/network/admin/listener.ora文件中增加一个监听器,监听器的地址是远程服务器址,端口是远程的端口,如:LISTENER126 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.126)(PORT = 1522)))表示连接到192.168.0.126的1522监听端口。然后用lsnrctl status LISTENER126就可显示远程服务器的监听状态了。同理,可以用这种方法启动和停止远程服务器的监听。
7、服务器的侦听端口是什么意思
服务器倾听端口 ,是服务器监听客户端用的 ,相当于"地址" ,是服务器与客户端间的纽带 .
举个例子:你登陆QQ ,你把你的用户名和密码输入后,点击"登陆" ,此时,客户端就会把你的密码和用户名发送到该端口的端口号.然后服务器经过到数据库验证,如果正确,就会把正确的信息发给你的客户端(就是你 的电脑) .
监听端口能使你获得远程连接。前提是你是公网IP,或网关上对你的监听的端口作了端口映射。在端口通的情况下,你就会看到“远程”,意味着很多内网用户就可连接到你。你就可以和更多的人进行连接下载,一般来说你的速度就会快起来。简单的说,你不监听端口,将少了一半的传输机会。
8、默认情况下,FTP服务器监听( )端口得知客户端的服务请求。(选择一项)
很明显
选C
9、如何让服务器监听两个端口?
最合理的方式是建立多个线程,每个线程监听一个端口。
当然一段代码轮询监听也不是不可以,但在效率上要低不少
10、服务器:“监听端口号”中的监听是什么意思?
监听就是服务器上的软件一直查看特定的端口,如果有从这个端口访问的就接管