服务器端代码:
package mysocket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
public class GreetingServer extends Thread {// 继承Thread类
private ServerSocket serverSocket;
public GreetingServer(int port) throws IOException {
this.serverSocket = new ServerSocket(port);//
serverSocket.setSoTimeout(10000);
}
public void run() {
while (true) {//循环监听是否有客户端连接
System.out.println("waiting for client on port "
+ serverSocket.getLocalPort() + "...");
Socket server;
try {
server = serverSocket.accept();//接受连接
System.out.println("Just connected to "
+ server.getRemoteSocketAddress());
DataInputStream in = new DataInputStream(//读客户端发来的消息
server.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out = new DataOutputStream(//发送消息给客户端
server.getOutputStream());
out.writeUTF("thank you for connecting to "
+ server.getLocalSocketAddress() + "\nGoodbye");
server.close();//关闭连接
} catch (SocketTimeoutException s) {
System.out.println("Socket timed out!");
break;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
break;
}
}
}
public static void main(String[] args) {
int port = 6066;
try {
Thread t = new GreetingServer(port);
t.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端代码:
package mysocket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class GreetingClient {
public static void main(String[] args) {
String serverName = "localhost";
int port = 6066;
try {
System.out.println("Connecting to " + serverName + " on port "
+ port);
Socket client = new Socket(serverName, port);//连接服务器
System.out.println("Just connected to "
+ client.getRemoteSocketAddress());
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF("hello from " + client.getLocalSocketAddress());//向服务器发送消息
InputStream inFromServer = client.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
System.out.println("Server says " + in.readUTF());//读服务器发来的消息
client.close();//关闭连接
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}