`
kuaile863
  • 浏览: 114488 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java如何通过socket实现服务端与客户端交互

阅读更多

  刚刚开始学习如何通过socket去发送信息下边的案例也是书上的在这留下笔记

   Socket APIjava .net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK文档。

  Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。

  getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。

getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。注意:其中getInputStreamgetOutputStream方法均可能会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。

 

服务端类代码:

/**

 * <p>作者 Administrator</p>

 * <p>功能描述:</p>

 * <p>创建时间:20122012-2-2上午11:06:05</p>

 */

package com.scok;

 

import java.io.DataInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.PrintStream;

import java.net.InetAddress;

import java.net.ServerSocket;

import java.net.Socket;

/**

 * <p>作者 Administrator</p>

 * <p>功能描述:</p>

 * <p>创建时间:20122012-2-2上午11:06:05</p>

 */

/**

 * @author Administrator

 *

 */

public class ClientServer {

  public static void main(String[] args) {

           //服务器接口类

           ServerSocket sst=null;

           //套接口类

           Socket sc=null;

           

           InputStream is=null;

           OutputStream os=null;

           //dataInput为input的子类

           DataInputStream in=null;

           //printStream为output的子类

           PrintStream ps=null;

           try {

                   //构造对象端口为8000

                   sst =new ServerSocket(8000);

                   //建立套接口

                   sc=sst.accept();

                   //获取套接口的输入流

                   is=sc.getInputStream();

                   //构造数据的输入流datainput对象in

                   in=new DataInputStream(is);

                   //获取套接口的输出流

                   os=sc.getOutputStream();

                   //构造数据的输出流PrintStream对象os

                   ps=new PrintStream(os);

                   //获取客户端的IP

           InetAddress Ip=sc.getInetAddress();

           //显示ip

           System.out.println("连接地址ip:"+Ip);

           int port;

           port=sc.getPort();

           System.out.println("客户端端口"+port);

           ps.println("Welcome");

           //在in上读取一行

           String str=in.readLine();

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

                    System.out.println("客户说:"+str);

          str=in.readLine();

          } 

           System.out.println("客户离开");

           

           

           } catch (IOException e) {

                   e.printStackTrace();

         }finally{

                   //关闭

                   try {

                   is.close();

                   os.close();

                   sc.close();

                   System.exit(0);

                   } catch (IOException e) {

                            e.printStackTrace();

                   }

                   

         }

}

}

 客户端类:

 

 

 

/**

 * <p>作者 Administrator</p>

 * <p>功能描述:</p>

 * <p>创建时间:20122012-2-2上午11:18:47</p>

 */

package com.scok;

 

import java.io.DataInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.PrintStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.net.UnknownHostException;

 

/**

 * <p>作者 Administrator</p>

 * <p>功能描述:</p>

 * <p>创建时间:20122012-2-2上午11:18:47</p>

 */

/**

 * @author Administrator

 *

 */

public class Client {

public static void main(String[] args) {

 

           //套接口类

           Socket sc=null;

           InputStream is=null;

           OutputStream os=null;

           //dataInput为input的子类

           DataInputStream in=null;

           //printStream为output的子类

           PrintStream ps=null;

           String str=null;

           

           try {

                     //创建客户端接口

           sc=new Socket("192.168.12.48",8000);

           System.out.println("come to server..");

           is=sc.getInputStream();

           os=sc.getOutputStream();

           in=new DataInputStream(is);

           ps=new PrintStream(os);

           str=in.readLine();

           System.out.println("server 说"+str);

           byte bt[]=new byte[20];

           System.in.read(bt);

           String msg=new String (bt,0);

           msg=msg.trim();

           while(!msg.equals("quit")){

                     ps.println(msg);

                     System.in.read(bt);

                     msg=new String(bt,0);

                     msg=msg.trim();

           }

           //传输信息到服务端

           ps.println(msg);

           } catch (UnknownHostException e) {

                   e.printStackTrace();

         } catch (IOException e) {

                   e.printStackTrace();

         }finally{

                   //关闭

                   try {

                   is.close();

                   os.close();

                   sc.close();

                   System.exit(0);

                   } catch (IOException e) {

                            e.printStackTrace();

                   }

                   

         }

}

}

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    基于java socket实现的ftp客户端和服务端交互

    本项目是使用java Socket编程实现的一个简单的FTP服务器和客户端。 客户端目前实现的功能是登录,刷新,上传和下载。同时具有主动模式和被动模式两种模式。 服务器端实现的功能有登录、刷新、上传、下载、列出文件...

    详解Android客户端与服务器交互方式

    最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json。要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台、传输数据格式...

    Spring Mvc和远程客户端的交互part1

    Nginx开启反向代理后客户端远程连接服务端进行交互,项目结构与代码例子

    Vue+Java 通过websocket实现服务器与客户端双向通信操作

    主要介绍了Vue+Java 通过websocket实现服务器与客户端双向通信操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    java socket 客户端 服务器端源代码

    作为一个java初学者 去学习socket 本源代码可以 拿到eclipse中去学习 很容易上门 对于初级的学习者来说 使用他是很有必要多找些好的代码的

    Java实现带有GUI界面的聊天室,双方通过socket通信

    服务端和客户端在对话框内输入消息,即可发送到对方的对话框内

    Android使用Netty网络框架实践(客户端、服务端)

    Android Studio 开发Netty网络访问框架,实现了客户端、服务端两种访问方式,支持发送心跳数据,使用Handler实现外部数据交互,有调用Demo,在实际项目中使用暂时没有问题

    Android例子源码简单Socket通信例子带服务端

    本项目是一个基于Socket通讯的例子源码,实现了一个简单的交互功能:安卓客户端发送“半径”值给服务端,服务器计算出圆面积,再发送回客户端。服务端是用的一个无限循环来等待客户端请求和消息,本项目有java服务端...

    完整的java socket聊天室

    实现了聊天室的服务端和客户端聊天交互,并且可以直接运行有界面支持比其他的只有部分代码的程序好多了,所以希望大家激情下载

    基于java实现Socket套接字一对一聊天系统源码+项目说明.zip

    基于java实现Socket套接字一对一聊天系统源码+项目说明.zip 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者...

    JAVA Socket远程执行任务

    写的一个关于socket的例子,实现了客户端和服务器端的简单交互,客户端给服务端发送命令和jar包由服务端执行后返回结果

    JAVASocket实现聊天

    使用JAVA Socket实现简单的聊天系统,实现客户端与服务端的信息交互

    WebSocket客户端和服务端实例源码

    众所周知,Web 应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量...

    java Socket多线程通讯实例

    Java tcp通讯,运用多线程,一个服务端与多个客户端进行交互

    java多线程QQ聊天

    多线程实现QQ聊天,socket实现客户端与服务端的交互,可以显示在线人数,在线好友等等。

    基于Java实现的Web服务器与测试工具开发.zip

    资源包含文件:设计报告word+服务端客户端源码 基于Java编程语言,利用http socket通信技术,写一个小型的web服务器与一个爬虫的测试工具,来对比分析所写的服务器获取到的页面源码与从tomcat获取的相似度。 (1)...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    Java五子棋联机版(windowbuilder界面)

    内含服务端和客户端,通过socket进行交互,内含精美棋盘设计,玩家还可以进行聊天等功能。

Global site tag (gtag.js) - Google Analytics