同步式连接效率较低
import java.net.*;
import java.io.*;
public class TestServer {
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(6666);
while (true) {
Socket s = ss.accept();
System.out.println("ok");
DataInputStream dis = new DataInputStream(s.getInputStream());
System.out.println(dis.readUTF());
dis.close();
}
}
}
import java.util.*;
import java.net.*;
import java.io.*;
public class TestClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("192.168.1.100",6666);
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("Hello Server");
dos.flush();
s.close();
}
}
一人一句通话
记住write()方法内必须加“\n”来换行不然readLine()方法会因为读取不到换行符而一直等待。
每次写出完毕记得加上flush()方法不然不会写出。
import java.util.*;
import java.io.*;
import java.net.*;
public class TestServer2 {
public static void main(String [] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(8888);
}catch(IOException e) {
System.out.println("传输错误");
}
Socket s = new Socket();
try{
s = ss.accept();
System.out.println("ok");
}catch(Exception e) {
System.out.println("连接失败");
}
try {
BufferedWriter bo = new BufferedWriter( new OutputStreamWriter(s.getOutputStream()));
BufferedReader bi = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
System.out.println("server :" + str);
while(!str.equals("bye")) {
bo.write(str + "\n");
bo.flush();
System.out.println("Cilent : " + bi.readLine());
str = br.readLine();
}
bo.close();
bi.close();
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
此处应为Client
import java.io.*;
public class Cilent {
public static void main(String[] args) {
try{
Socket s = new Socket("192.168.1.100",8888);
BufferedReader bi = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bo = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Server : " + bi.readLine());
String str = br.readLine();
while(!str.equals("bye")) {
bo.write(str + "\n");
bo.flush();
System.out.println("Server : " + bi.readLine());
str = br.readLine();
}
bi.close();
br.close();
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
}