簡單的一個socket通信
//客戶機
package Client;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public static void main(String args[]){
String host= "172.31.18.85";
int port=65200;
PrintWriter pw ;
BufferedReader br;
String CilentSay;
String temp;
try {
Socket socket = new Socket(host,port);
//狀態提示
System.out.println("你已經成功鏈接服務端。。。");
Scanner in = new Scanner(System.in);
while(true){
//接受來自服務器的消息
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
temp =br.readLine();
System.out.print(" 主服務器發來消息:");
System.out.println(temp);
//向服務起發送消息
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
System.out.print(" 向主服務器發消息:");
CilentSay=in.nextLine();
pw.println(CilentSay);
pw.flush();
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//服務器
package Server;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
public static void main(String args[]){
PrintWriter pw;
String temp;
String serverSay;
BufferedReader br;
try {
ServerSocket serversocket = new ServerSocket(65200);
System.out.println("服務器啓動了...");
Socket socket = serversocket.accept();
System.out.println("客戶機鏈接服務器");
Scanner in =new Scanner(System.in);
while(true){
//向客戶機發送消息
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
System.out.print(" 向客戶機發消息:");
serverSay=in.nextLine();
pw.println(serverSay);
pw.flush();
//接受來自客戶機的消息
br = new BufferedReader
(new InputStreamReader(socket.getInputStream()));
temp = br.readLine();
System.out.print(socket.getInetAddress()+" 發來消息:");
System.out.println(temp);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
遇到的困惑
這個socket用了一晚上才寫出來,一直只能單向通訊,或者每次只能互發一條消息,最後我將我的發送消息的代碼
`while(in.hasNext()){
serverSay=in.nextLine();
pw.println(serverSay);
pw.flush();}
改 成
serverSay=in.nextLine();
pw.println(serverSay);
pw.flush();
去掉那個循環就能實現多次雙向通信,有知道的同學請評論一下,向你請教一下。