package com.yimu.socket;
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
public class SocketTest {
public static void main(String[] args) {
String serverName = "localhost";
int port = Integer.parseInt("6066");
try {
System.out.println("连接到主机:"+serverName + "端口号:"+ port);
Socket client = new Socket(serverName, port);
System.out.println("连接到远程主机:"+client.getRemoteSocketAddress());
OutputStream outputStream = client.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
dataOutputStream.writeUTF("Hello from "+client.getLocalSocketAddress());
InputStream inputStream = client.getInputStream();
while (true) {
DataInputStream dataInputStream = new DataInputStream(inputStream);
System.out.println("客户端相应:"+dataInputStream.readUTF());
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
dataOutputStream.writeUTF(s);
}
}catch (IOException e){
e.printStackTrace();
}
}
}
package com.yimu.socket;
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class GreetingServer extends Thread
{
private ServerSocket serverSocket;
public GreetingServer(int port) throws IOException
{
serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(100000);
}
public void run()
{
while(true)
{
try
{
System.out.println("等待远程连接,端口号为:" + serverSocket.getLocalPort() + "...");
Socket server = serverSocket.accept();
System.out.println("远程主机地址:" + server.getRemoteSocketAddress());
DataInputStream in = new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF("谢谢连接我:" + server.getLocalSocketAddress() + "\nGoodbye!");
while (true) {
DataInputStream dataInputStream = new DataInputStream(server.getInputStream());
System.out.println("服务器相应:"+dataInputStream.readUTF());
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
out.writeUTF(s);
}
}catch(SocketTimeoutException s)
{
System.out.println("Socket timed out!");
break;
}catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
public static void main(String [] args)
{
try
{
Thread t = new GreetingServer(6066);
t.run();
}catch(IOException e)
{
e.printStackTrace();
}
}
}