java6.01学习笔记TCPServer

原创 2016年06月01日 21:04:02

同步式连接效率较低

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();
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

TCPServer

刘俊翔的第102篇博客
  • fallinlovelj
  • fallinlovelj
  • 2015年08月27日 02:36
  • 311

muduo中的TcpServer一次完整的工作(下)

模拟单线程情况下muduo库的工作情况在上篇中,笔者追踪了Connetfd(连接套接字)和Listenfd(监听套接字)的Channel对象加入到loop循环的过程。其中包括了网络连接过程中,mudu...
  • will_free
  • will_free
  • 2017年03月08日 15:25
  • 151

tcpServer

/******************* tcpServer.c *********************/ #include #include #include #include ...
  • susubuhui
  • susubuhui
  • 2012年01月12日 10:13
  • 477

Indy tcp server

unit serverUnit;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, F...
  • hzqghost
  • hzqghost
  • 2007年04月08日 00:30
  • 1359

12.Tornado TCPServer类的设计解读 (副标题: 一个通用的server框架)

前文已经说过,HTTPServer是派生自TCPServer,从协议层次上讲,这再自然不过。 从TCPServer的实现上看,它是一个通用的server框架,基本是按照BSD socket的思想...
  • u014252563
  • u014252563
  • 2016年05月29日 15:21
  • 611

Qt一步步搭建TcpServer3——关闭与启动

前言 1Server启动 2关闭Server 1修改TcpSession 2 线程池关闭 5总结承接上章: Qt一步步搭建TcpServer2——线程池本章将在上一章的基础上,讲述如何安全的关闭与启动...
  • zy19940906
  • zy19940906
  • 2017年08月16日 21:30
  • 429

Delph7中TcpClient和TcpServer用法分析

最近使用了Delphi7提供的TcpCLient和TcpServer两个VCL控件,发现这两个控件使用非常简单,不像网上不少帖子说的那样难用、性能差。TcpClient和TcpServer没有采用事件...
  • quicmous
  • quicmous
  • 2009年06月12日 10:25
  • 9539

JaCoCo关于on-the-fly模式的使用记录

JaCoCo学习
  • supermc123
  • supermc123
  • 2017年09月20日 17:19
  • 96

muduo库的学习10---TcpServer与TcpClient的基本设计---TcpConnection建立与关闭

aa
  • u010087886
  • u010087886
  • 2016年02月29日 11:34
  • 419

muduo : TcpServer

引言上篇博文学习了Acceptor class 的实现,它仅仅是对Channel和Socket的简单封装,对使用者来说简单易用。这得益于底层架构Reactor。接下来,开始学习muduo对于建立连接的...
  • chj90220
  • chj90220
  • 2016年08月11日 14:32
  • 242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java6.01学习笔记TCPServer
举报原因:
原因补充:

(最多只允许输入30个字)