已经发表个人公众号

Socket和ServerSocket

Socket为“孔”或“插座”,创建Socket,打开连接Socket的输入或输出流,对Socket进行读写,关闭Socket。

Accept方法用于产生“阻塞”,这里有getInputStream方法和getOutInputStream方法,会产生一个IOException,

在Java.net包中,有Socket和ServerSocket两个类。以JDK1.6介绍:

构造方法

public Socket()
public Socket(String host, int port)
//host - 主机名,或者为 null,表示回送地址
//port - 端口号 public Socket(InetAddress address,int port)
//address - IP 地址
//port - 端口号

ServerSocket类有3个构造方法

ServerSocket(int port)

ServerSocket(int port,int backlog)

ServerSocket(int port,int backlog,InetAddress binAddr)
服务器与客户端通信
package two;

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; public class ServerSocket1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket ss = new ServerSocket(2007);
while(true) {
Socket s = ss.accept();
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("helloworld, i am server thinkpad"); DataInputStream dis = new DataInputStream(is);
String str = dis.readLine();
System.out.println(str);
s.close(); }
}
catch(IOException ee) {
System.out.println(ee);
}
catch(Exception e) {
System.out.println(e);
}
}
}
package two;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ConnectException;
import java.net.Socket; public class ClientSocket {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Socket s = new Socket("########",2007);
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("hello , i am client"); DataInputStream dis = new DataInputStream(is); String str = dis.readLine();
System.out.println(str);
s.close(); }
catch(ConnectException eee) {
System.out.println(eee);
}
catch(IOException ee) {
System.out.println(ee);
}
catch(Exception e) {
System.out.println(e);
}
}
}
线程:

线程也称为轻量级进程,是程序执行的最小单元。是程序中一个单一的顺序控制流程,在程序中同时运行多个线程,称为多线程。进程是一个可执行的程序。一个应用可以有一个或多个进程,对于一个进程可以有一个或多个线程,其中一个是主线程,public static void main。

创建,执行线程的速度比进程更快。

多客户请求服务
public class DuoServer{
public static void main(String[] args){
boolean connected = true;
try{
ServerSocket ss = new ServerSocket(2007);
int clientnum=0;
while(connected){
ServerThread st = new ServerThread(ss.accept(),clientnum);
st.start();
clientnum++;
System.out.println(clientnum);
}
}
catch(Excepiton e){
System.out.println(e);
}
}
} class ServerThread extends Thread{
private Socket s;
int clientnum;
public ServerThread(Socket s, int num){
this.s = s;
clientnum = num + 1;
}
public void run(){
try{
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("i am server"); DataInputStream dis = new DataInputStream(is);
String str = dis.readLine();
System.out.println(str);
}
catch(Excepiton e){
System.out.println(e);
}
}
}

网络开发Socket和ServerSocket的更多相关文章

  1. 网络编程--Socket与ServerSocket

    1.服务器端代码 package net; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Sock ...

  2. JAVA I/O(四)网络Socket和ServerSocket

    <Thinking in Enterprise Java>中第一章描述了用Socket和Channel的网络编程,核心即为Socket和Channel,本文简单讲述Socket的应用. S ...

  3. 【网络开发】详谈socket请求Web服务器过程

    最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有"连接建立"的发生 ...

  4. JAVA I/O(五)多线程网络Socket和ServerSocket

    上篇文章介绍了Socket和ServerSocket简单使用和源码,服务器端会对每个客户端请求创建一个线程,为使服务器端能同时处理多个客户端请求,可以采用多线程的方式.本文仅对实例进行简单记录,如下. ...

  5. JAVA: Socket和ServerSocket网络编程

    面是本次学习的笔记.主要分异常类型.交互原理.Socket.ServerSocket.多线程这几个方面阐述. 异常类型 在了解Socket的内容之前,先要了解一下涉及到的一些异常类型.以下四种类型都是 ...

  6. Android 网络编程 Socket

    1.服务端开发 创建一个Java程序 public class MyServer { // 定义保存所有的Socket,与客户端建立连接得到一个Socket public static List< ...

  7. android 网络编程--socket tcp/ip udp http之间的关系

    网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层,一般编程人员接触最多的就是应用层和运输层,再往下的就是所谓的媒体层了,不是我们研究的对象. 下面是应用层.运输层,网络 ...

  8. Python之网络编程Socket

    Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络 ...

  9. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅     1 TCP的开销 a ...

随机推荐

  1. ELK学习笔记之logstash的各个场景应用(配置文件均已实践过)

    详细请参考该文 https://www.cnblogs.com/qingqing74647464/p/9378385.html

  2. Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束

    Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎:    MySQL中的数据用各种不同的技术存储在文件( ...

  3. JAVA基础之会话技术-Cookie及Session

    至此,学习Servlet三个域对象:ServletContext(web项目).request(一次请求).Session(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会 ...

  4. tar.bz2解压异常

    问题描述: [root@mvp-dd ~]# tar jxf ffmpeg-.tar.bz2 tar (child): bzip2: Cannot exec: No such file or dire ...

  5. Grafana+Prometheus实现Ceph监控和钉钉告警-转载(云栖社区)

    获取软件包 最新的软件包获取地址 https://prometheus.io/download/ Prometheus 1.下载Prometheus $ wget https://github.com ...

  6. pyecharts绘制map地图

    pyecharts的安装和地图库的安装可以参照 geo绘图:https://www.cnblogs.com/qi-yuan-008/p/12025123.html 直接进入 python的具体使用阶段 ...

  7. 调用百度API返回经纬度

    后台调用百度API接口生成: import java.io.BufferedReader; import java.io.IOException;import java.io.InputStreamR ...

  8. SQL进阶系列之10HAVING子句又回来了

    写在前面 HAVING子句的处理对象是集合而不是记录 各队,全队点名 --各队,全体点名! CREATE TABLE Teams (member CHAR(12) NOT NULL PRIMARY K ...

  9. 通过ip找mac

    # coding:utf-8 import os cmd = {'arp': 'arp -a | find "', 'route': 'route PRINT ' } def win_mac ...

  10. 读取txt写入excel

    import csv #实现的思想:首先从txt中读取所有的内容,NUM=1当做键,其他当做值,如果查找缺少a,b,c,d,e,f,g# 则NUM不会添加到字典中,然后通过所有的NUM和字典中的KEY ...