Java study 2:The note of studying Socket which based TCP

  1. TCP concept:

      传输控制协议(Transmission Control Protocol, TCP)是一种面向连接(连接导向)的、可靠的、基于字节流运输层(Transport layer通信协议,由IETF的RFC 793说明(specified)。(from bing)

  2、TCP program:
      (1)、有明确的C/S之分,Server端用ServerSocket,Client端用Socke;

      (2)、Server端用accept()做監聽等待接收,一旦有鏈接連上的話,返回一個Socket對象作爲Client

      (3)、C/S都是用getInputStream/getOutputStream來讀取/寫入message

下面上代碼:

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 import java.io.PrintWriter;
 5 import java.net.ServerSocket;
 6 import java.net.Socket;
 7
 8 public class ServerCode {
 9     private static int port =4444;
10     static Socket cs;
11     public static void main(String[] args) throws IOException {
12         ServerSocket ss=new ServerSocket(port);
13         cs=ss.accept();
14         System.out.println("Accept :"+cs);
15         try{
16             BufferedReader br=new BufferedReader(new InputStreamReader(cs.getInputStream()));
17             PrintWriter pr=new PrintWriter(cs.getOutputStream(),true);
18             while(true){
19                 String str=br.readLine();
20                 if(str.equals("bye")){
21                     break;
22                 }
23                 System.out.println("Client->Server:"+str);
24                 pr.println("send back to client:"+str);
25             }
26             br.close();
27             pr.close();
28         }catch(Exception e){
29             System.out.println("error:"+e);
30         }finally{
31             System.out.println("close the Server socket and the io.");
32             cs.close();
33             ss.close();
34         }
35
36     }
37
38 }

ServerCode

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 import java.io.PrintWriter;
 5 import java.net.InetAddress;
 6 import java.net.Socket;
 7
 8 public class ClientCode {
 9     public static void main(String[] args) throws IOException {
10         InetAddress add=InetAddress.getByName("localhost");
11         Socket cs=new Socket(add,4444);
12         System.out.println("socket = " + cs);
13         try{
14             BufferedReader br=new BufferedReader(new InputStreamReader(cs.getInputStream()));
15             PrintWriter pw=new PrintWriter(cs.getOutputStream(),true);
16             pw.println("Hello I‘m qixi");
17             String str=br.readLine();
18             System.out.println(str);
19             pw.println("bye");
20         }catch(Exception e){
21             System.out.println(e);
22         }finally{
23             System.out.println("close the Client socket and the io.");
24             cs.close();
25         }
26     }
27 }

ClientCode

时间: 2024-08-05 01:49:47

Java study 2:The note of studying Socket which based TCP的相关文章

Java study 1:The note of studying Socket which based UDP

UDP concept: UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范.UDP在IP报文的协议号是17.(from baike) UDP program: 因爲UDP協議是一種無連接的協議,所以 (1).每次發送數據並不需要綁定,只需要使用DatagramP

ClientAbortException: java.net.SocketException: Software caused connection abort: socket write erro

1.错误描述 ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:407) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteCh

Caused by: java.net.SocketException: Software caused connection abort: socket write error

1.错误描述 [ERROR:]2015-10-16 22:28:39,964 [异常拦截] exception.ExceptionHandler ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.ja

Java从零开始学四十五(Socket编程基础)

一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机. 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为服务器等待客户提出请求并予以响应.客户则

eclipse的TestNG报错java.net.SocketException: Software caused connection abort: socket write error"

最近整了一个自动化项目,需要用到testng,安装的最新版本6.11.0老是提示错误java.net.SocketException: Software caused connection abort: socket write error" 百度了半天终于解决了,具体方法如下: 1,卸载eclipse中原安装的6.11.0版本 2,安装指定的版本6.8.22: 输入指定的版本地址安装.http://beust.com/eclipse-old/eclipse_6.8.22.20150507032

java中所有的通信都是socket

java中所有的通信都是socket 我目前知道的java几种通信方式: 1.socket+serverSocket通信. 2.NIO 服务端与客户端使用的还是Socket. 3.servlet :是由tomcat这种web容器解析的, 过程:tomcat的serverSocket接收到客户端的请求后根据URL和web.xml映射到servlet. 4. Hessian 使用的是servlet方式: 1 <servlet> 2 <servlet-name>remote-servic

testNG java.net.SocketException: Software caused connection abort: socket write error

执行用例报错,提示 java.net.SocketException: Software caused connection abort: socket write error java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutpu

运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接

运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接 最近在项目中可能要用到socket相关的东西来发送消息,所以初步研究了下socket的TCP和UDP实现方式,并且结合java1.5的concurrent.ExecutorService类来实现多线程. 具体实现方式见代码: 一.TCP方式: 1.服务端实现方式: TCP的服务端实现方式主要用到ServerSocket类,接收等待客户端连接的方法是accept(); 代码如下:类Sock

linux下java程序与C语言程序通过SOCKET通信的简单例子

linux下java程序与C语言程序通过SOCKET通信的简单例子 今天上午实验了java程序与c语言程序通过socket进行通信.由于没学过java,因此只是编写了C语言端的代码,java端的代码是从网上别的文章中找的,经过少量修改后与C语言端程序通信成功. 本例中C语言端作为服务器,java端作为客户端 代码如下: /****************** server program *****************/ #include <stdio.h> #include <sy