关闭

java6.01学习笔记TCPServer

标签: java
96人阅读 评论(0) 收藏 举报
分类:

同步式连接效率较低

import java.net.*;
import java.io.*;
public class TestServer {
    public static void main(String[] args) throws Exception{
        //服务器应该一直属于等待状态,不间断运行。
        //等待客户端的连接,6666为端口号
        ServerSocket ss = new ServerSocket(6666);
        //服务器端接受连接,返回Socket类型。服务器端
        //一般为死循环一直使用accept方法。
        while (true) {
            Socket s = ss.accept();
            System.out.println("ok");
            //建立读取管道
            DataInputStream dis = new DataInputStream(s.getInputStream());
            System.out.println(dis.readUTF());
            dis.close();
        }
    }
}


import java.util.*;
import java.net.*;
import java.io.*;
//Tcp协议
public class TestClient {
    public static void main(String[] args) throws Exception {
        //Client端申请连接
        Socket s = new Socket("192.168.1.100",6666);
        //传输数据,拿到输出管道
        OutputStream os = s.getOutputStream();
        DataOutputStream dos = new DataOutputStream(os);

        dos.writeUTF("Hello Server");
        dos.flush();
        s.close();
    }
}

一人一句通话

记住write()方法内必须加“\n”来换行不然readLine()方法会因为读取不到换行符而一直等待。

每次写出完毕记得加上flush()方法不然不会写出。

import java.util.*;
import java.io.*;
import java.net.*;

public class TestServer2 {
    public static void main(String [] args) {
        ServerSocket ss = null;
        try {

            ss = new ServerSocket(8888);
        }catch(IOException e) {
            System.out.println("传输错误");
        }
        Socket s = new Socket();
        try{
            s = ss.accept();
            System.out.println("ok");
        }catch(Exception e) {
            System.out.println("连接失败");
        }

        try {
            BufferedWriter bo = new BufferedWriter( new OutputStreamWriter(s.getOutputStream()));
            BufferedReader bi = new BufferedReader(new InputStreamReader(s.getInputStream()));

            String str = null;
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            str = br.readLine();
            System.out.println("server :" + str);
            while(!str.equals("bye")) {
                bo.write(str + "\n");
                bo.flush();
                System.out.println("Cilent : " + bi.readLine());
                str = br.readLine();
            }
            bo.close();
            bi.close();
            br.close();
        }catch(IOException e) {
            e.printStackTrace();
        }
    }   
}

此处应为Client

import java.io.*;

public class Cilent {
    public static void main(String[] args) {
        try{
            Socket s = new Socket("192.168.1.100",8888);

            BufferedReader bi = new BufferedReader(new InputStreamReader(s.getInputStream()));
            BufferedWriter bo = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Server : " + bi.readLine());
            String str = br.readLine();

            while(!str.equals("bye")) {

                bo.write(str + "\n");
                bo.flush();
                System.out.println("Server : " + bi.readLine());
                str = br.readLine();

            }

            bi.close();
            br.close();
            br.close();
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34682次
    • 积分:1264
    • 等级:
    • 排名:千里之外
    • 原创:75篇
    • 转载:5篇
    • 译文:20篇
    • 评论:3条
    文章分类
    文章存档
    最新评论