网络编程之TCP协议学习

来源:互联网 发布:游戏服装设计软件 编辑:程序博客网 时间:2024/06/07 05:24
/**
 * 1.tcp传输:客户端对应的对象是socket,服务端对应的是ServerSocket
 * 2.客户端:通过查阅socket对象,发现在该对象建立时,就可以去连接指定主机,
 *   因为tcp是面向连接的,所以在建立socket服务时,就要在有服务端的存在,并连接成功
 * @author qiuzhiwen
 *
 */
class Client implements Runnable{
private Socket s;
public Client(Socket s){
this.s=s;
}

@Override
public void run() {
try {
//获取键盘输入流
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//发送数据,获取socket流中的输出流
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//读入服务端返回的数据信息
BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
String line=null;
while((line=br.readLine())!=null){
if("over".equals(line))
break;
out.write(line);
out.newLine();
out.flush();
System.out.println("server:"+bufin.readLine());
}
br.close();
s.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


/**
 * 服务端:
 * 1.建立服务端的socket--serverSocket,并监听一个端口
 * 2.获取连接过来的客服端对象
 *   通过Serversocket的accept方法,没有连接就会等--阻塞的
 * 3.客服端发过来数据,获取数据
 * @author qiuzhiwen
 *
 */
public class TCPDemo {
public static void main(String[] args) {
try {

ServerSocket ss=new ServerSocket(10005);
new Thread(new Client(new Socket("127.0.0.1", 10005))).start();
Socket s=ss.accept();//获取socket对象
System.out.println(s.getInetAddress().getHostAddress()+"connected.....");
BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bufout=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line="";
while((bufin.readLine())!=null){
bufout.write(line.toUpperCase());
bufout.newLine();
bufout.flush();
}
   s.close();//关闭客服端
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}


}
原创粉丝点击