package cn.hncu.tcp.show;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
//import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MySocketServer {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(6666);
/*
* 服务器在等待客户端来握手(建立连接),这是一个阻塞方法,
* 如果没有客户端来握手则会一直处于等待状态。
* 若客户端来请求握手且成功,则会返回与对方(客户端)通讯的Socket s。
* 在后面就可以通过这个返回的s进行与这个客户端通讯
*/
Socket s=ss.accept();
//程序若执行到这一句,则表示服务器端一定有一个客户端连接成功,且与对方通讯的Socket就是s
System.out.println("2222222");
//s中包含两个流: in, out
//OutputStream out=s.getOutputStream();//通过out发数据给对方
InputStream in=s.getInputStream();//通过in读取对方发来的数据
//收数据
DataInputStream din=new DataInputStream(in);
String str=din.readUTF();
System.out.println(str);
din.close();
in.close();
}
}
package cn.hncu.tcp.show;
import java.io.DataOutputStream;
import java.io.IOException;
//import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class MySocketClient {
public static void main(String[] args) throws IOException {
/*
* 客户端尝试向服务器进行握手,若超时则表示连接失败,抛出异常。 否则代码连接成功,后面的代码就可以通过s和服务器通讯
*/
Socket s = new Socket("127.0.0.1", 6666);
// 程序执行到此,表示客户端一定与服务器端成功建立连接,否则上一句会出异常,不会执行到这里。
System.out.println("11111111");
// s中包含两个流: in, out
OutputStream out = s.getOutputStream();// 通过out发数据给对方
//InputStream in = s.getInputStream();// 通过in读取对方发来的数据
// 向服务器发送数据
String str = "Hello server!!! ";
DataOutputStream dout = new DataOutputStream(out);
dout.writeUTF(str);
dout.close();
out.close();
}
}