刚刚开始学习如何通过socket去发送信息下边的案例也是书上的在这留下笔记
Socket API:java .net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK文档。
Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。
getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。
getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。注意:其中getInputStream和getOutputStream方法均可能会产生一个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();
- }
- }
- }
- }