1、简介:

  1)SOCKET是应用程序和网络之间的一个接口。SOCKET创建设置好以后,应用程序可以:

  通过网络把数据发送到socket 。

  通过网络从socket接收数据。(通信的前提是应用程序知道服务端的ip及其正在监听的端口号,每台机器有65,536 个端口)

  2)SOCKET有两种基本类型:

  SOCK_STREAM 即TCP • 可靠传递 • 保证顺序 • 基于连接 • 双向

  SOCK_DGRAM • 即UDP • 不太可靠传递 • 不保证顺序 • 无持久连接 • 发送或接收

  2、实例

  服务端

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; public class SocketServer {
public static void main(String[] args) throws IOException{
int port = 666;
ServerSocket server = new ServerSocket(port);
System.out.println("服务端开始监听指定的端口(不同端口对应不同服务)");
while(true){
Socket sockect = server.accept();//保持阻塞状态,直到有连接进来
InputStream input = sockect.getInputStream();
OutputStream output = sockect.getOutputStream();
String mes = "hello";
byte[] messs = mes.getBytes("UTF-8");
output.write(messs);
int len;
byte[] bytes = new byte[1024];
StringBuilder string = new StringBuilder();
while((len = input.read(bytes))!=-1){
string.append(new String(bytes, 0, len, "UTF-8"));
}
System.out.println("收到客户端信息: " + string);
input.close();
output.close();
sockect.close();
} }
}

  客户端

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket; public class SocketClient { public static void main(String[] args) throws IOException { int port = 666;
String ip = "127.0.0.1";
Socket socket = new Socket(ip, port);
OutputStream output = socket.getOutputStream();
InputStream input = socket.getInputStream();
String mess = "hello god";
byte[] men = mess.getBytes("UTF-8");
output.write(men);
socket.shutdownOutput();
byte[] newbuu = new byte[1024];
int len;
StringBuilder str = new StringBuilder();
while ((len = input.read(newbuu)) != -1) {
str.append(new String(newbuu, 0, len, "UTF-8"));
}
System.out.print("服务端返回:" + str);
output.close();
input.close();
socket.close();
}
}

  总的来说,java中,服务端需要监听,用到一个serversocket类,该类完成监听后就立即功成身退了,有连接进来时,就是剩下通过socket的读写了。

java - Socket简单编程实践的更多相关文章

  1. Java Socket 网络编程心跳设计概念

    Java Socket 网络编程心跳设计概念   1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...

  2. Java Socket网络编程的经典例子(转)

    事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作.Socket ...

  3. Java Socket网络编程Server端详解

    Socket通信:分为客户端和服务端的socket代码. Java SDK提供一些相对简单的Api来完成.对于Java而言.这些Api存在与java.net 这个包里面.因此只要导入这个包就可以开始网 ...

  4. Java之Socket网络编程实践

    转自:http://my.oschina.net/leejun2005/blog/104955#comments 一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准 ...

  5. 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)

    目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...

  6. Java Socket 简单梳理

    Sockets let you send raw streams of bytes back and forth between two computers, giving you fairly lo ...

  7. 【Socket】Java Socket基础编程

    Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...

  8. Java Socket网络编程学习笔记(一)

    0.前言 其实大概半年前就已经看过网络编程Socket的知识了(传统IO),但是因为长时间的不使用导致忘的一干二净,最近正好准备校招,又重新看了网络编程这一章, 是传统IO(BIO)相关的内容,故在此 ...

  9. linux系统socket通信编程实践

    简单介绍并实现了基于UDP(TCP)的windows(UNIX下流程基本一致)下的服务端和客户端的程序,本文继续探讨关于UDP编程的一些细节. 下图是一个简单的UDP客户/服务器模型: 我在这里也实现 ...

随机推荐

  1. 06_android虚拟机介绍

    分辨率不用选太高,否则会占用太大内存.你选高分辨率一跑起来会干掉你的500多MB的内存.1/8内存就没了.百分之97%或者是98%的设备都是ARM CPU.ARM自己不生产CPU,它生产的是一个标准的 ...

  2. 【总结整理】overflow: auto/hidden;清除自己

    .top-nav{ font-size: 12px; font-weight: bold; list-style-type: none; border-bottom: 8px solid #DC4E1 ...

  3. 23.通过MS17_010来学习msf对渗透的利用

    Metersploit 集成了渗透阶段的全部利用,从漏洞探测,到漏洞利用,最后到后渗透阶段.本次博客主要抛砖引玉,通过对MS17_010漏洞的复现,来学习Metasploit. 漏洞环境: 靶机:wi ...

  4. hdu1078

    #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; i ...

  5. jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值

    —.获取dropdownlist的text(ddlList为服务器端dropdownlist的ID,生成name属性等于ddlList的select标签) $("#ddlList optio ...

  6. AOP常用注解

    1.@Aspect 配置切面Bean,和<bean.../>元素进行配置无区别,一样支持依赖注入来配置属性值: 如果启动了Spring的"零配置"特性,一样可以让Spr ...

  7. java学习笔记——基于Robot类的屏幕分享

    直接上代码,具体看注释: package robot; import java.awt.AWTException; import java.awt.Dimension; import java.awt ...

  8. 对不起,给pandas配表情包太难了,pandas你该这么学,No.6

    如果图片无法观看,请移步 https://blog.csdn.net/hihell 标题起的长,才能引起你的注意呢 昨天,有个家伙,留言给我说 嫌我不好好写博客 就知道给文章配表情包 在这里,郑重的回 ...

  9. Hadoop中解除 "Name node is in safe mode"的方法

    运行hadoop程序时,有时候会报以下错误,说明Hadoop的NameNode处在安全模式下. 原因分析: 在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文 ...

  10. 全网排名第一的免费开源ERP Odoo Git源代码部署教程

    文/开源智造联合创始人老杨 本文来自<开源自主OdooERP部署架构指南>试读:第三章-Git源代码部署 .书籍尚未出版,请勿转载.欢迎您反馈阅读意见. 我们将从git源代码部署Odoo ...