java - Socket简单编程实践
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简单编程实践的更多相关文章
- Java Socket 网络编程心跳设计概念
Java Socket 网络编程心跳设计概念 1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...
- Java Socket网络编程的经典例子(转)
事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作.Socket ...
- Java Socket网络编程Server端详解
Socket通信:分为客户端和服务端的socket代码. Java SDK提供一些相对简单的Api来完成.对于Java而言.这些Api存在与java.net 这个包里面.因此只要导入这个包就可以开始网 ...
- Java之Socket网络编程实践
转自:http://my.oschina.net/leejun2005/blog/104955#comments 一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准 ...
- 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)
目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...
- Java Socket 简单梳理
Sockets let you send raw streams of bytes back and forth between two computers, giving you fairly lo ...
- 【Socket】Java Socket基础编程
Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...
- Java Socket网络编程学习笔记(一)
0.前言 其实大概半年前就已经看过网络编程Socket的知识了(传统IO),但是因为长时间的不使用导致忘的一干二净,最近正好准备校招,又重新看了网络编程这一章, 是传统IO(BIO)相关的内容,故在此 ...
- linux系统socket通信编程实践
简单介绍并实现了基于UDP(TCP)的windows(UNIX下流程基本一致)下的服务端和客户端的程序,本文继续探讨关于UDP编程的一些细节. 下图是一个简单的UDP客户/服务器模型: 我在这里也实现 ...
随机推荐
- redis GEO地理位置命令介绍
GEOADD keylongitude latitude member [longitude latitude member ...] Available since 3.2.0. Time comp ...
- console (控制台)
console 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台. 该模块导出了两个特定的组件: 一个 Console 类,包含 console.log() ...
- AngularJs(Part 9)--AngularJS 表单
AngularJS 表单 AngularJS使用了MVX的结构,我们可以是传统的表单更加强大.比如过去我们得自己写一大堆验证,比过过去我们得自己转换用户的输入, 现在这些工作全部可以交给Ang ...
- tensorflow第一个例子
import tensorflow as tf import numpy as np # create data x_data = np.random.rand(100).astype(np.floa ...
- Luogu 2839 [国家集训队]middle
感觉这题挺好的. 首先对于中位数最大有一个很经典的处理方法就是二分,每次二分一个数组中的下标$mid$,然后我们把$mid$代回到原来的数组中检查,如果一个数$a_{i} \geq mid$,那么就把 ...
- How to install Samba server on Ubuntu 12.04
Part 1: Configuring anonymous share with samba server To install the samba package,enter the followi ...
- 第四周作业-视频学习、教材作业wireshark
教材总结与作业 总结 网络嗅探技术定义:网络嗅探(sniff)是一种黑客常用的窃听技术,(1)利用计算机的网络接口截获目的地为其他计算机的数据报文,(2)监听数据流中所包含的用户账户密码或私密通信等. ...
- vue中通过cross-env插件配置三种环境(开发,测试,生产)打包,不用切换api
1. 话不多说,第一步就是安装必要的插件 npm install cross-env --save 2.修改config里面的参数,这里只展示一个test,其他类似 3.修改package.json ...
- bootstrap初学者模板
<!doctype html> <html lang="en"> <head> <!-- Required meta tags --> ...
- webpack@3.6.0(1) -- 快速开始
本篇内容 前言 配置入口和输出 热更新 loader配置 js代码压缩 html的打包与发布 前言 //全局安装 npm install -g webpack(3.6.0) npm init //安装 ...