(五)Sccket通信实现

  • 创建socket

  • 创建socket

Socket();
Socket(InetAddress address,int port);
Socket(String host,int port);
Socket(InetAddress  host,int port,InetAddress localAddr,int localPort);
Socket(String host,int port,InetAddress localAddr,int localPort);
  • 客户端Socket的建立

try{
  Socket socket=new Socket("127.0.0.1",2000);
}catch(IOException e){
   System.out.println("Error:"+e);
}
  • 服务器端Socket的建立

ServerSocket server=null;
try{
server=new ServerSocket(2000);
}catch(IOException e){
System.out.println("can not listen to:"+e);
  }
Socket socket=null;
try{
 socket=server.accept();
}catch(IOException e){
System.out.println("Error:"+e);
 }
  • 打开输入/输出流

printStream os=new PrintStream(new 
   BufferedOutputStream(socket.getOutputStream()));
DataInputStream is=new
    DataInputStream (socket.getInputStream());
PrintWriter out=new
  PrintWriter(socket.getOutputStream(),true);
BufferedReader in=new
   BufferedReader (new 
     InputStreamReader(socket.getInputStream()));
  • 关闭socket

os.close();
is.close();
socket.close();
//关闭的顺序是先关闭流再关闭socket

demo:命令行聊天程序

客户端程序:

public class TalkClient{
  public static void main(String args[]){
    try{
Socket socket=new Socket("127.0.0.1",4700);
//键盘输入流
BufferedReader sin=new BufferedReader(new 
    InputStreamReader(System.in));
//输出流
 PrintWriter os=new
   PrintWriter(socket.getOutputStream());
//接收来自网络的信息
BufferedReader is=new BufferedReader(new 
  InputStreamReader(socket.getInputStream()));
String readline;
readline=sin.readLine();
while(!readLine.equals("bye"))
{os.println(readline);
 os.flush();
System.out.println("Client:"+readline);
System.out.println("Server:"+is.readline());
readline=sin.readLine();
     }
os.close();
is.close();
socket.close();
   }catch(Exception e){
System.out.println("Error"+e);
  }
 }
}

服务器端程序:

public class TalkServer{
  public static void main(String args[]){
  try{
ServerSocket server=null;
try{
  server=new ServerSocket(4700);
}catch(Exception e){
System.out.println("can not listen to:"+e);}
Socket socket=null;
try{
  socket=server.accept();
}catch(Exception e){
System.out.println("Error:"+e);
}
String line;
BufferedReader is=new BufferedReader (new
   InputStreamReader(socket.getInputStream()));
PrintWriter os=new
  PrintWriter (socket.getOutputStream());
BufferedReader sin=new BufferedReader (new
  InputStreamReader(System.in));
System.out.println("Client:"+is.readLine());
line=sin.readLine();
while(!line.equals("bye"))
{
  os.println(line);
  os.flush();
System.out.println("Server:"+line);
System.out.println("Client:"+is.readLine());
line=sin.readLine();
}
os.close();
is.close();
socket.close();
server.close();
}catch(Exception e){
System.out.println("Error:"+e);
   }
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值