1、Linux中如何查看服務及監聽埠
可以通過netstat命令進行簡單查詢
netstat命令各個參數說明如下:
內-t : 指明顯容示TCP埠
-u : 指明顯示UDP埠
-l : 僅顯示監聽套接字(所謂套接字就是使應用程序能夠讀寫與收發通訊協議(protocol)與資料的程序)
-p : 顯示進程標識符和程序名稱,每一個套接字/埠都屬於一個程序。
-n : 不進行DNS輪詢,顯示IP(可以加速操作)
3
即可顯示當前伺服器上所有埠及進程服務,於grep結合可查看某個具體埠及服務情況··
netstat -ntlp //查看當前所有tcp埠·
netstat -ntulp |grep 80 //查看所有80埠使用情況·
netstat -an | grep 3306 //查看所有3306埠使用情況·
2、伺服器是如何監聽埠發過來的數據
在收到消來息的函數裡面,會有一個參數源,如果是用Windows API做的話,就有一個sockaddr_in的結構體,裡麵包含了對方的IP和埠,記得埠是高低位元組錯位的,把高8位和低8位調換一下就好了。
有了對方的IP和埠,直接再向這個IP和埠發消息就好了。
3、易語言伺服器如何監聽客戶埠
可以考慮用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();
} }
}
}
}
4、伺服器:「監聽埠號」中的監聽是什麼意思?
監聽就是伺服器上的軟體一直查看特定的埠,如果有從這個埠訪問的就接管
5、如何讓伺服器監聽兩個埠?
最合理的方式是建立多個線程,每個線程監聽一個埠。
當然一段代碼輪詢監聽也不是不可以,但在效率上要低不少
6、dns伺服器的監聽埠是哪個埠
對應的服抄務會起相應襲的埠。譬如FTP是20和21的默認埠,網頁是默認監聽80埠,DNS默認是53埠等等。
windows中,可以通過netstat -ano命令來查看相關軟體使用的埠。
linux中,可以通過netstat -ant命令來看相關軟體使用的埠。
7、windows下node伺服器監聽的埠號如何修改
代碼如下:
var http=require(『http』版);
var url=require(『url』);
function start(){
function onRequest(req,res){
權res.writeHead(200,{『Content-type』:『text/plain』});
res.write(『hello world』);
res.end();
}
var server=http.createServer(onRequest);
server.listen(80,『ccc.com』);
console.log(『Server is started』);
}
start();
8、php 如何監聽伺服器埠
<?php
//設置運行時間:永不超時
set_time_limit (0);
//開啟緩沖
ob_implicit_flush ();
//IP地址
$ip = "127.0.0.1";
//監聽埠
$port = 80;
//創建socket
$socket = socket_create (AF_INET, SOCK_STREAM, 0);
if (!$socket){
die("創建socket失敗!").socket_strerror(socket_last_error());
}
//綁定socket
$bind = socket_bind ($socket, $ip, $port);
if (!$bind){
die("綁定.socket失敗!").socket_strerror ($bind);
}
//監聽socket
$listen = socket_listen ($socket);
if (!$listen){
die("監聽失敗!").socket_strerror ($listen);
}
echo "{$port}埠監聽成功!";
?>
9、伺服器監聽埠號起什麼作用
伺服器埠號 ,是伺服器監聽客戶端用的 ,相當於"地址" ,是伺服器與客戶端間的紐帶 .
舉個例子:你登陸QQ ,你把你的用戶名和密碼輸入後,點擊"登陸" ,此時,客戶端就會把你的密碼和用戶名發送到該埠的埠號.然後伺服器經過到資料庫驗證,如果正確,就會把正確的信息發給你的客戶端(就是你 的電腦) .
埠有好多,電腦中有9000多個已經規定好的埠,還有好多自己定義的埠,8000 ,10000
不懂的還可以找我
[email protected]