TCP编程,Socket通讯

来源:互联网 发布:股票逐笔成交明细数据 编辑:程序博客网 时间:2024/05/22 04:50

网络编程分两种,一种是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 blocke.printStackTrace();} }}

服务端:

public class S {public static void main(String[] args) {try {ServerSocket server = new ServerSocket(10086);   //服务端,端口是10086Socket 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 blocke.printStackTrace();}}}

public class GetMsg extends Thread {private Socket s;public GetMsg(Socket s){this.s = s;}@Overridepublic void run() {// TODO Auto-generated method stubBufferedReader 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 blocke.printStackTrace();}}}



实验结果:















以上实现的是客户端与服务器端一对一之间的通讯,也可以实现多人聊天的功能,而服务器在这之间的角色就相当于中介,负责转发信息,如果需要多人聊天的可以留下邮箱或qq号我发给你。



0 0