導航:首頁 > IDC知識 > javasocket客戶端伺服器

javasocket客戶端伺服器

發布時間:2021-01-13 23:42:26

1、java socket編程 伺服器和客戶端程序都連接不上,急急,謝謝,好人好報

你測試通過過最建單的 網路鏈接服務嗎?
先不要 frame 形式的
命令行的

Java » 網路協議

網路協議 屏幕截圖
認證( 7 ) 壓縮連接( 1 ) 網路爬蟲( 2 ) 數據包( 5 ) 數據網路套接字( 14 ) 電子郵件( 11 )
Ftp( 14 ) HTML解析器( 10 ) Http加密連接( 5 ) Http鏈接( 23 ) 鏈接( 2 ) 國家地域名( 1 )
IP地址( 18 ) JNLP網路啟動( 10 ) MIME類型( 1 ) 數據機( 4 ) 網路命令( 7 ) 網路介面( 6 )
輸入輸出包套接字( 8 ) 呼叫( 2 ) 代理伺服器( 1 ) 代理( 3 ) RMI( 5 ) 伺服器( 17 )
伺服器套接字( 16 ) 伺服器套接字管道( 1 ) SMTP協議( 3 ) 嗅探器( 1 ) 套接字( 24 ) 套接字地址( 1 )
SSL伺服器套接字( 11 ) TCP連接( 8 ) 遠程登錄( 2 ) UDP連接( 10 ) 網址( 25 ) 網路連接( 15 )
URL解碼( 1 ) 公具( 4 ) 各種客戶端( 4 ) 網頁表格( 1 ) Web伺服器客戶端( 11 ) Web伺服器( 5 )

具體代碼實例在鏈接里。
http://www.1java2c.com/CN/Code/Java/Network-Protocol/CatalogNetwork-Protocol.htm

2、JAVA伺服器與客戶端的socket通信問題

你可以在每個用戶連上伺服器端時,都發送一個消息,就是用4個位元組表示是用專戶的ID,並將與屬用戶通信的socket,用一個HashMap存儲起來,而不是用LinkList。<ID,Socket>

後面如果A發送消息給C,就把A的前四個位元組(即ID)取出來,在HashMap中找到與C通信的socket,然後把消息通過socket發送出去···· 這部分代碼應該很容易實現的,Socket通信這東西,理清了思路就很好弄了~~

3、java中用socket實現客戶端與服務端雙向連接問題

//服務端程序:
import java.io.*;
import java.net.*;

public class TCPServer {
public static void main(String[] args) throws IOException {
 TCPServer().init();
}
@SuppressWarnings("static-access")
private void init() throws IOException{
@SuppressWarnings("resource")
ServerSocket server = new ServerSocket(1000);
Socket client = null;
while(true){
try {
client = server.accept();
BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
byte[] b = new byte[1024];
int len = 0;
String message = "";
while((len=bis.read(b))!=-1){
message = new String(b,0,len);
System.out.print("客戶端:"+client.getInetAddress().getLocalHost().getHostAddress()+"發來消息:" + message);
if("byte".equals(message.trim()))
client.close();
PrintWriter pw = new PrintWriter(client.getOutputStream(),true);
pw.println(message);
}
} catch (Exception e) {
System.err.println("客戶端:"+client.getInetAddress().getLocalHost().getHostAddress()+" 已斷開連接!");
}
}
}
}//客戶端程序:
import java.io.*;
import java.net.Socket;

public class TCPClient implements Runnable{
public static void main(String[] args) throws IOException {
new TCPClient().init();
}
private void init() throws IOException{
@SuppressWarnings("resource")
final Socket client = new Socket("127.0.0.1",1000);
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String send = "";
while(true){
send = in.readLine();
PrintWriter out = new PrintWriter(client.getOutputStream(),true);
if(!"byte".equals(send.trim()))
out.println(send);
else{
out.println(send);
System.exit(0);
}
new Thread(new TCPClient(){
@SuppressWarnings("static-access")
public void run(){
try {
BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
byte[] b = new byte[1024];
int len = 0;
while((len=bis.read(b))!=-1){
System.out.println("伺服器:" +client.getInetAddress().getLocalHost().getHostAddress()+"發來消息:"+new String(b,0,len).trim());
}
} catch (IOException e) {
System.err.println("連接伺服器失敗!");
}
}
}).start();
}
}
public void run() {}
}

//伺服器測試結果:

客戶端:192.168.0.200發來消息:001 byte

客戶端:192.168.0.200發來消息:byte

客戶端:192.168.0.200 已斷開連接!

客戶端:192.168.0.200發來消息:adasd

客戶端:192.168.0.200 已斷開連接!

//客戶端測試結果:

---001號客戶端--

001 byte

伺服器:192.168.0.200發來消息:001 byte

byte //001禮貌說跟伺服器說byte

---002號客戶端--

adasd //002客戶端直接關閉程序

伺服器:192.168.0.200發來消息:adasd

4、java socket 客戶端是如何向伺服器端發送消息的

伺服器端和客戶端都是通過SOCKET來進行通信的,首先產生一個 socket實例,通過這個實例,伺服器端調用accept這個方法接收來自客戶端發送的信息.但是在產生socket實例的時候必須初始化一個埠.用來負責接受客戶端的請求!
客戶端要給伺服器發送消息也必須產生一個socket實例,初始化的時候必須指定伺服器的IP地址,並且指定服務接收的埠號,這樣客戶端才能找到伺服器要接收的地方,找到地方就可以發送過去了。和你寫信一樣。找到地址
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter out = new PrintWriter(socket.getOutputStream());

BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
這個只是用來獲取一個從鍵盤的一個流.傳送給伺服器端的數據都是通過流來表示的。意思是是鍵盤輸入的一個位元組轉化成字元流.並輸出或者寫入!

5、用Java 的socket實現客戶端的功能

//服務端程序:
import java.io.*;
import java.net.*;
 
public class TCPServer {
    public static void main(String[] args) throws IOException {
        new TCPServer().init();
    }
    @SuppressWarnings("static-access")
    private void init() throws IOException{
        @SuppressWarnings("resource")
        ServerSocket server = new ServerSocket(1000);
        Socket client = null;
        while(true){
            try {
                client = server.accept();
                BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
                byte[] b = new byte[1024];
                int len = 0;
                String message = "";
                while((len=bis.read(b))!=-1){
                    message = new String(b,0,len);
                    System.out.print("客戶端:"+client.getInetAddress().getLocalHost().getHostAddress()+"發來消息:" + message);
                    if("byte".equals(message.trim()))
                        client.close();
                    PrintWriter pw = new PrintWriter(client.getOutputStream(),true);
                    pw.println(message);
                }
            } catch (Exception e) {
                System.err.println("客戶端:"+client.getInetAddress().getLocalHost().getHostAddress()+" 已斷開連接!");
            }
        }
    }
}//客戶端程序:
import java.io.*;
import java.net.Socket;
 
public class TCPClient implements Runnable{
    public static void main(String[] args) throws IOException {
        new TCPClient().init();
    }
    private void init() throws IOException{
        @SuppressWarnings("resource")
        final Socket client = new Socket("127.0.0.1",1000);
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String send = "";
        while(true){
            send = in.readLine();
            PrintWriter out = new PrintWriter(client.getOutputStream(),true);
            if(!"byte".equals(send.trim()))
                out.println(send);
            else{
                out.println(send);
                System.exit(0);
            }
            new Thread(new TCPClient(){
                @SuppressWarnings("static-access")
                public void run(){
                    try {
                        BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
                        byte[] b = new byte[1024];
                        int len = 0;
                        while((len=bis.read(b))!=-1){
                            System.out.println("伺服器:" +client.getInetAddress().getLocalHost().getHostAddress()+"發來消息:"+new String(b,0,len).trim());
                        }
                    } catch (IOException e) {
                        System.err.println("連接伺服器失敗!");
                    }
                }
            }).start();
        }
    }
    public void run() {}
}

//伺服器測試結果:

客戶端:192.168.0.200發來消息:001 byte

客戶端:192.168.0.200發來消息:byte

客戶端:192.168.0.200 已斷開連接!

客戶端:192.168.0.200發來消息:adasd

客戶端:192.168.0.200 已斷開連接!

//客戶端測試結果:

---001號客戶端--

001 byte

伺服器:192.168.0.200發來消息:001 byte

byte //001禮貌說跟伺服器說byte

---002號客戶端--

adasd //002客戶端直接關閉程序

伺服器:192.168.0.200發來消息:adasd

6、java socket伺服器發送信息給指定的客戶端,在線等

是tcp還是udp啊?socket連接可以指定ip和埠啊,所以服務端即使有N個socket連接都不怕,知道埠就行了

7、在java中如何用Socket 進行 伺服器端和客戶端交互的,具體一點。

打橫杠是因為那個方法已經過時了現在已經不怎麼用了。。。
Socket 伺服器: 1先創建 ServerSocket ss = new ServerSocket(埠號)

2 接收請求 Socket s = ss.accept()

3接收消息 先讀後寫BufferedReader in = new BufferedReader(
new InputStreamReader(s.getInputStream(),"utf-8"));
String str = in.readLine(); PrintWriter out = new PrintWriter
( new BufferedWriter( new OutputStreamWriter(s.getOutputStream())),true);
out.println("伺服器信息");

4關閉流out.close();
in.close();
is.close();

客戶端 1、通過IP地址和埠實例化Socket,請求連接伺服器
2、獲取Socket上的流以進行讀寫。
3、對流包裝進BufferedReader/PrintWriters實例
4、關閉打開的流

8、java socket伺服器怎麼給所有客戶端發系統消息

將鏈接過來的socket保存,需要廣播時遍歷發送:
在server主類中版定義private static List<Socket> sos=new ArrayList<Socket>();並添加getset方法,在server線程類的構權造方法中:
public ServerThread(Socket s,List<ShipMes> ships){
this.s=s;
this.ships=ships;
ss.setSos(s);
}
需要廣播時:
List<Socket> sos=ss.getSos();
Iterator<Socket> i=sos.iterator();
Socket temps=null;
while(i.hasNext()){
temps=(Socket)i.next();
os=new PrintWriter(temps.getOutputStream());
os.println(mess);
os.flush();
}

與javasocket客戶端伺服器相關的知識