网络编程分两种,一种是TCP编程,另一种是UDP编程(点击打开链接)。而本文先讲述简单的TCP编程,Socket套接字连接通讯,实现简单的客户端与服务器之间的信息传输。
下面是客户端与服务器之间简单的数据传输(单对单):
注意:服务端先启动,然后再启动客户端。
客户端:
public class C { public static void main(String[] args) { try { Socket s = new Socket("172.18.122.64", 10086); //访问服务端是本地服务器,端口号是10086,要相同 if(s.isConnected()){ System.out.println("客户端成功连接"); } BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); Scanner in = new Scanner(System.in); /*GetMsg get = new GetMsg(s); get.start();*/ while(true){ String s1 = in.next(); if(s1.equals("exit")){ break; } bw.write(s1); bw.newLine(); bw.flush(); } bw.close(); s.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
public class S { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(10086); //服务端,端口是10086 Socket s = server.accept(); //开始监听连入的客户端口 String clientip = s.getInetAddress().getHostAddress(); //获得客户端ip地址 System.out.println("连入服务器的是来自:"+clientip); boolean flag = true; GetMsg get = new GetMsg(s); get.start(); /*SendMsg send = new SendMsg(s); send.start();*/ while(flag){ } s.close(); server.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
public class GetMsg extends Thread { private Socket s; public GetMsg(Socket s){ this.s = s; } @Override public void run() { // TODO Auto-generated method stub BufferedReader br; String str; try { br = new BufferedReader(new InputStreamReader(s.getInputStream())); boolean flag = true; while(flag){ if((str=br.readLine())!=null){ System.out.println(str); } } br.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
以上实现的是客户端与服务器端一对一之间的通讯,也可以实现多人聊天的功能,而服务器在这之间的角色就相当于中介,负责转发信息,如果需要多人聊天的可以留下邮箱或qq号我发给你。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u012432475/article/details/47065569