java Socket(一个简单的TCP通信程序)

昨天看了一下,TCP网络设计,虽然之前老师讲过,当时好像没怎么弄,不会,现在感觉这个蛮有意思的,从零开始,一步一步的学习它!

(1)TCP服务器程序如下:

package 网络程序设计;
import java.io.*;
import java.net.*;
public class TCPServer {

public static void main(String[] args) {
// TODO Auto-generated method stub
       String data=null;//存放接受的字符串
       try{
      ServerSocket ss=new ServerSocket(6666); //写个Socket端口“6666”,随便取的,不过要在0~65535之内(1~1032,是署名端口号,不可挪做他用)
      Socket st=ss.accept();  //创建一个倾听的Socket
      System.out.println("Server has connected");
      BufferedReader in=new BufferedReader(new InputStreamReader(st.getInputStream()));//创建一个从Socket中读文本行的流
      PrintWriter out=new PrintWriter(st.getOutputStream(),true);//创建一个向Socket中写文本行的流,自动刷新
      do{
      data=in.readLine();//读取客户机发送的一行文本
      System.out.println("服务端收到的字符串是:"+data);//在屏幕中打印出来
      System.out.println("服务端发回的字符串是:"+data);
      out.println(data);
      out.flush();//清空缓存区
      }while(!data.equals("bye"));//接收到“bye”就结束通信
      out.close();//关闭Socket输出流
      in.close();//关闭Socket输入流
      st.close();//关闭Socket
      ss.close();//关闭SocketServer
       }catch(Exception e){
      System.out.println("Whoops!It didn't work!"+e);
       }
}

}



(2)TCP客户机程序如下:

package 网络程序设计;
import java.io.*;
import java.net.*;
public class TCPClient {
    
public static void main(String[] args) {
// TODO Auto-generated method stub
       String data=null;
       String kdata=null;
       try{
      Socket st=new Socket("192.168.1.106",6666);//向服务器发起连接,本机IP
      PrintWriter out=new PrintWriter(st.getOutputStream(),true);//创建一个向Socket中写文本行的流,自动刷新
      
      BufferedReader in=new BufferedReader(new InputStreamReader(st.getInputStream()));//创建一个从socket中读文本行的流
      BufferedReader kin=new BufferedReader(new InputStreamReader(System.in));//创建一个键盘读文本行的流
      
      do{
      System.out.print("客户端发出的字符串:");
      kdata=kin.readLine();//从键盘中读取一行字符
      out.println(kdata);//向服务器发送过去
      data=in.readLine();//读取服务器的响应
      System.out.println("客户端收到的字符串:"+data);
      out.flush();//清除缓存区
      }while(!kdata.equals("bye"));//发送“bye”就结束通信
      out.close();//关闭Socket输出流
      in.close();//关闭Socket输入流
      st.close();
       }catch(Exception e) {
      System.out.println("Whoops!It didn't work!"+e);
       }
       
}


}

//首先运行TCPServer,再运行TCPServer,在客户端首先发送一条消息“Hello TCPServer!”,再发一条“I'm TCPClient!”,最后发送“bye”,就结束通信。

(3)运行结果如下:

TCPClient:

客户端发出的字符串:Hello TCPServer
客户端收到的字符串:Hello TCPServer
客户端发出的字符串:I'm TCPClient!
客户端收到的字符串:I'm TCPClient!
客户端发出的字符串:bye
客户端收到的字符串:bye


TCPServer:

Server has connected
服务端收到的字符串是:Hello TCPServer
服务端发回的字符串是:Hello TCPServer
服务端收到的字符串是:I'm TCPClient!
服务端发回的字符串是:I'm TCPClient!
服务端收到的字符串是:bye
服务端发回的字符串是:bye

 


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值