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客户/服务器模型: 我在这里也实现 ...
随机推荐
- jprofiler9.1.1 安装与配置
一.安装部分 安装包: 1.jprofiler_linux_9_1_1.rpm 2.jprofiler_windows-x64_9_1_1.exe 需要注意的是,Linux 和 Windows 安装的 ...
- mongodb操作数据集合
1.创建数据集: a.创建不设置参数的默认数据集(默认数据集自带一个流水id,_id) db.createCollection("mycol") //创建默认集合 b.创建指定参数 ...
- URAL 1297 Palindrome (后缀数组+RMQ)
题意:给定一个字符串,求一个最长的回回文子串,多解输出第一个. 析:把字符串翻转然后放到后面去,中间用另一个字符隔开,然后枚举每一个回文串的的位置,对第 i 个位置,那么对应着第二个串的最长公共前缀, ...
- ant安装和配置
一.安装ant到官方主页http://ant.apache.org下载新版(我用的1.9.2)的ant,得到的是一个apache-ant-1.9.2-bin.zip的压缩包.将其解压到你的硬盘上,例如 ...
- ibatis知识点汇总
一个参数,返回Map <select id="getShopInfo" parameterClass="java.lang.String" resultC ...
- C# 写 LeetCode easy #21 Merge Two Sorted Lists
21. Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list s ...
- mssql 递归
--递归id往下所有内容with temp ( URE_ID, URE_PARENT_ID,URE_NAME ,URE_TYPE)as(select URE_ID, URE_PARENT_ID,URE ...
- PHP开源系统学习之fluxbb_1
最近一直忙于做项目,虽说做了点新东西.感觉自己进步不是很大,总体水平还是跟半年前差不多,想到的东西跟以前差不多,写出来的东西也跟以前差不多.只是现在做的东西多些,比以前敢做了. 近期准备利用点时间,读 ...
- [CentOS7] 设备与文件名对应表
- 管理时间TED语录
When people find out I write about time management, They assume two things. One is that I'm always o ...