java网络编程ServerSocket类 和Socket类的常用构造方法及其方法
Socket类
Socket(InetAddress address, int port)
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
创建一个套接字并将其连接到指定远程地址上的指定远程端口。
Socket(String host, int port, InetAddress localAddr, int localPort)
创建一个套接字并将其连接到指定远程主机上的指定远程端口。
close()
关闭此套接字。
connect(SocketAddress endpoint)
将此套接字连接到服务器。
connect(SocketAddress endpoint, int timeout)
将此套接字连接到服务器,并指定一个超时值。
getInetAddress()
返回套接字连接的地址。
getInputStream()
返回此套接字的输入流。
getLocalPort()
返回此套接字绑定到的本地端口。
getOutputStream()
返回此套接字的输出流。
getPort()
返回此套接字连接到的远程端口。
ServerSocket类
ServerSocket(int port)
创建绑定到特定端口的服务器套接字。
accept()
侦听并接受到此套接字的连接。
getInetAddress()
返回此服务器套接字的本地地址。
Socket编程步骤
服务器端创建ServerSocket对象,调用accept方法返回Socket对象
客户端创建Socket对象,通过端口连接到服务器
客户端、服务器端都使用Socket中的getInputStream方法和getOutputStream方法获得输入流和输出流,进一步进行数据读写操作
(InetAddress用来描述主机地址;
Socket用来创建两台主机之间的连接;
ServerSocket用来侦听来自客户端的请求;
Socket通常称作“套接字”,通常通过“套接字”向网络发出请求或者应答网络请求。)
单一服务器对多客户端
服务端:每次连接成功一个客户端,则启动一个线程为其服务
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10086);
System.out.println("服务器正常启动。。。");
while(true){
Socket socket = ss.accept();
System.out.println("用户接入成功。。。");
new ServerThread(socket).start();
}
}
}
单一服务器对多客户端
客户端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner; public class Client {
private static PrintWriter pw=null;
private static BufferedReader br=null;
private static Socket s;
static Scanner scanner=new Scanner(System.in);
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Socket s=new Socket(InetAddress.getLocalHost(),5500);
pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
while(true){
System.out.println("Client端请输入:");
String str = scanner.next();
pw.println(str);
pw.flush();
String string=br.readLine();
System.out.println("Client读到:"+string);
if(str.equals("exit")){
break;
}
}
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
br.close();
pw.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
服务端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class Server {
private static BufferedReader br=null;
private static PrintWriter pw=null;
private static ServerSocket ss;
private static Socket s;
static Scanner scanner=new Scanner(System.in);
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ss=new ServerSocket(5500);
System.out.println("服务器正常启动。。。。");
s=ss.accept();//阻塞方法
System.out.println("连接成功"+s.getRemoteSocketAddress());
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
while(true){
String string=br.readLine();
System.out.println("Server读到:"+string);
System.out.println("Server端请输入:");
String str=scanner.next();
pw.println(str);
pw.flush();
if(str.equals("exit")){
break;
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
pw.close();
br.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} }
java网络编程ServerSocket类 和Socket类的常用构造方法及其方法的更多相关文章
- Java 网络编程(四) InetAddress类
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951895.html Java 网络编程(四) InetAddress类 InetAdd ...
- java网络编程serversocket
转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerS ...
- Java 网络编程(二) 两类传输协议:TCP UDP
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951841.html 两类传输协议:TCP,UDP TCP TCP是Transfer C ...
- java网络编程(2)InetAddress 类及udp协议
InetAddress 类 JDK中为开发网络应用程序提供了java.net包,该包下的类和接口差点儿都是为网络编程服务的. InetAddress:用于描写叙述IP地址的对象 InetAddress ...
- Java网络编程--套接字Socket
一.套接字Socket IP地址标志Internet上的计算机,端口号标志正在计算机上运行的进程(程序). 端口号被规定为一个16位的0--65535之间的整数,其中,0--1023被预先定义的服务通 ...
- Java网络编程(一)Socket套接字
一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...
- C-Sharp网络编程案例解析(Socket类的使用)
Server端: using System; using System.Collections.Generic; using System.Text; using System.Net; using ...
- java 网络编程(五)Socket多线程上传文件
客户端: package cn.sasa.socketUploadFileDemo; import java.io.FileInputStream; import java.io.IOExceptio ...
- java网络编程socket解析
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...
随机推荐
- python_数据类型
数据类型 1.数字类型 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点.Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Pytho ...
- 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)
一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...
- Mac系统安装和配置tomcat步骤详解
一:下载 打开Apache Tomcat官网,选择需要的版本下载: 二:存放到本地 文件夹重名民为ApacheTomcat,放到/Users/计算机名/Library/目录下 三:启动Tomcat 打 ...
- jQuery获取select值
jQuery操作select标签 即控制select的option属性 <select id="sid" > <option value="-1&quo ...
- laravel中判断当前页面与连接地址是否一致,并添加效果:
- jsp 中文乱码
解决jsp中文乱码问题的几个步骤 1 jsp页面设置 <%@ page language="java" contentType="text/html; ...
- Java中的equals和==的差别 以及Java中等价性和同一性的讨论
==对基本数据类型比较的是值,对引用类型比较的是地址 equals()比较的是对象的数据的引用 等价性原理: 自反性 x.equals(x)为true 对称性 x.equals(y) 为t ...
- 20 KMP匹配的Next值和Nextval值
i 0 1 2 3 4 5 6 7 8 s a b a b a a b a b n ...
- UVa LA 2965 - Jurassic Remains 中间相遇,状态简化 难度: 2
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- centos7 克隆 网卡无法启用
1.克隆后查看网卡无法启用,报错信息如下: Apr :: agent systemd: network.service: control process exited, code=exited sta ...