Java网络编程2---Socket-TCP编程

Sockct:插座

Socket是关于TCP的。

端口号:两个字节->65536个端口号,一个应用程序占多个端口号;

但是假设一个应用程序占一个端口号;一台电脑会有65535个应用程序。

自己编写程序要占用端口号1024以上后的。

80端口:网页

端口号分为:TCP端口和UDP端口。每个有65535个端口。




通过管道(流)来说话

栗子:
服务器端:

package com.zhj.www;
import java.io.DataInputStream;
import java.io.InputStream;
import java.net.*;
public class TCPServer {public static void main(String[] args)throws Exception {ServerSocket ss = new ServerSocket(6666);//服务器监听6666端口口while(true) {	Socket s =ss.accept();//自身建立一个Socket与客户端连接System.out.println("A client connect!");//阻塞式的连接,一个客户端连接,另外一个客户端不会链接。DataInputStream dis = new DataInputStream(s.getInputStream());System.out.println(dis.readUTF());dis.close();s.close();}}
}

客户端:

package com.zhj.www;
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.*;
public class TCPClient {public static void main(String[] args) throws Exception {Socket s = new Socket("127.0.0.1", 6666);//建立连接,client随机某个端口去连接服务器的6666OutputStream oStream = s.getOutputStream();//拿到输出管道;DataOutputStream dataOutputStream = new DataOutputStream(oStream);dataOutputStream.writeUTF("hello server!");dataOutputStream.flush();dataOutputStream.close();s.close();}
}

-----------------------------------------------------------------------------

---------------------------------------------------------------------------->

栗子1:(一端说,一端听):TestServer.java &&TestClient.java

服务器端:
package com.zhj.www;import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class TestServer {/*拿到服务器端的数据写到客户端*/public static void main(String[] args) {try {ServerSocket  ss = new ServerSocket(8888);while(true) {Socket socket  = ss.accept();OutputStream oStream = socket.getOutputStream();DataOutputStream dataOutputStream = new DataOutputStream(oStream);dataOutputStream.writeUTF("Hello,"+socket.getInetAddress()+"port #"+socket.getPort()+" bye-bye");//客户端的端口号是随机的dataOutputStream.close();socket.close();}}catch (Exception e) {e.getStackTrace();System.out.println("程序运行出错:"+e);}}}
客户端:
package com.zhj.www;import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;
import java.net.Socket;public class TestClient {public static void main(String[] args) {try {Socket socket = new Socket("127.0.0.1", 8888);InputStream is =socket.getInputStream();DataInputStream dInputStream = new DataInputStream(is);System.out.print(dInputStream.readUTF());dInputStream.close();socket.close();}catch (ConnectException connExc) {connExc.getStackTrace();System.out.println("服务器连接失败!");} catch (IOException e) {e.getStackTrace();}}}

--------------------------------------------------------------------------------->

栗子2(两端都说,两端都听) TestSocketServer.java && TestSocketClient.java

服务器端:

package com.zhj.www;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class TestSocketServer {public static void main(String[] args) {InputStream in = null;OutputStream out	= null;try {ServerSocket ss	= new ServerSocket(5888);Socket socket = ss.accept();in	= socket.getInputStream();out = socket.getOutputStream();DataOutputStream dataOutputStream	=	new DataOutputStream(out);DataInputStream dataInputStream = new DataInputStream(in);String string = null;if ((string = dataInputStream.readUTF()) != null) {System.out.println(string);System.out.println("from: "+socket.getInetAddress());System.out.println("Port:"+socket.getPort());}dataOutputStream.writeUTF("hi,hello");dataOutputStream.close();dataInputStream.close();socket.close();} catch (IOException e) {e.printStackTrace();}}
}

客户端:

package com.zhj.www;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class TestSocketClient {public static void main(String[] args) {InputStream inputStream =null;OutputStream outputStream = null;try {Socket socket= new Socket("localhost", 5888);inputStream = socket.getInputStream();outputStream  =socket.getOutputStream();DataInputStream dataInputStream = new DataInputStream(inputStream);DataOutputStream dataOutputStream = new DataOutputStream(outputStream);dataOutputStream.writeUTF("hey");String string = null;while((string = dataInputStream.readUTF())!= null) {System.out.println(string);	}dataOutputStream.close();dataInputStream.close();socket.close();}catch (UnknownError e) {e.printStackTrace();} catch (IOException e) {e.getStackTrace();}}
}

栗子3:聊天程序:







本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

winform绑定多张图片

开发winform程序的时候经常设计到要显示多张图片的问题,其解决思路一般是先遍历文件夹中的所有图片,然后再把这些图片添加到ImageList控件中,最后再绑定显示出来。这里我们介绍两种绑定的方法: (一)动态生成…

Java网络编程3---Socket-UDP编程

栗子:TestUDPServer.java 服务器端: package com.zhj.www;import java.net.DatagramPacket; import java.net.DatagramSocket;public class TestUDPServer {public static void main(String[] args)throws Exception {byte buf[] new byte[1024];Datagr…

Java GUI 基础知识

这部分主要包含AWT、组件和容器、布局管理器Component:所有可以和用户交互的图形元素,他的子类有:输入框… Java.awt及其子包 Container:容器,容纳其他各种各样的Component的元素。 Panel:可以容纳其他元素…

Java GUI 基础知识2 监听机制

TestActionEvent.java没有调用方法,但是有反应。反应自己要编写程序有反应。 事件模型:一定要有某些反应。 写程序,监听的操作是自动发生的,一直监听。钩子函数,(回调函数) 怎么让它自动执行&am…

数据结构 二、向量(接口与实现and可扩容向量)

ADT操作实例:Disordered:显示出3对逆序紧邻对。Vector模板类初始有效空间为0;基于复制的构造描述区间:左闭右开 为什么*2?有限时间内不必要为扩容而打断。 2、可扩充向量左移一位:加一倍

Android 服务(Service)

一、服务的解释 服务(Service)是Android中实现后台运行的解决方案,它适合那些去执行不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖任何的与任何用户界面,即使程序被切换到后台,或者用户打开了另外一个应…

Moravec角点检测算子

Moravec角点检测算子 Moravec 在1981年提出Moravec角点检测算子[1],并将它应用于立体匹配。 首先, 计算每个像素点的兴趣值, 即以该像素点为中心, 取一个w*w(如:5x5)的方形窗口, 计算0度、45度、90度、135度四个方向灰度差的平方和, 取其中的最小值作为该像素点的兴…

文件夹生成工具

很简单的一个小工具,输入一个字符串,可以为你生成相应的文件夹. 至于有什么用?我公司一个策划拿一顿饭给我要的. 下载地址: http://pan.baidu.com/s/1d0ewl 转载于:https://www.cnblogs.com/WhyEngine/p/3350053.html

(转载)深入理解Linux中内存管理---分段与分页简介

首先,必须要阐述一下这篇文章的主题是Linux内存管理中的分段和分页技术。 来回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的。换句话说,就是程序在运行的过程中访问的都是物理地址。如果这个系统只运行一个程序&…

java中main函数的args参数

先说一下args的作用:我们习惯将一些有用的参数传递给我们定义的函数,那么可曾想过有参数传递给main函数?args就是传递给main函数的一个数组参数。可是main函数作为程序(application程序)的入口点,是由系统自动调用的,怎…

黑马程序员-------------(十)Java基础知识加强(一)

JDK1.5新特性 目录1.之前已经学习过的JDK1.5新特性2.静态导入 StaticImport3.可变参数 ...4.高级for循环5.枚举6.泛型 Generic7.注解注:本章全部为重点内容。###################################################################################################…

java例子:九九乘法表

来吧直接上代码&#xff1a;public class Test{public static void main(String[] args) {for(int i 1; i<9;i){for (int j 1; j < i ;j ) {System.out.print(j"x"i""j*i" ");}System.out.print("\n");}} }运行之后&#xff1…

算法:查找

查找算法&#xff08;比较&#xff09;基本思想顺序查找顺序查找也称为线形查找&#xff0c;属于无序查找算法。从数据结构线形表的一端开始&#xff0c;顺序扫描&#xff0c;依次将扫描到的结点关键字与给定值k相比较&#xff0c;若相等则表示查找成功&#xff1b;若扫描结束仍…

query上传插件uploadify参数详细分析

query上传插件uploadify参数详细分析 Uploadify Version 3.2 官网&#xff1a;http://www.uploadify.com/ 注&#xff1a;文件包里有两个js分别是&#xff1a;jquery.uploadify.js 和 jquery.uploadify.min.js&#xff0c;两者其实一样&#xff0c;只需载入其中一个js即可。很明…

type_traits应用

工作遇到这样的例子&#xff0c;对不同数据进行计算处理&#xff0c;得到一组结果集&#xff0c;包括计数、比例等。各个计算处理过程不同&#xff0c;结果集数据结构相同&#xff0c;但并非所有计算过程均有计数、比例的结果&#xff0c;有些可能只有计数&#xff0c;有些只有…

那些不能错过的XCode插件

XCode颜色显示插件ColorSense代码里的那些冷冰冰的颜色数值&#xff0c;到底时什么颜色&#xff1f;如果你经常遇到这个问题&#xff0c;每每不得不运行下模拟器去看看&#xff0c;那么这个插件绝对不容错过。更彪悍的是你甚至可以点击显示的颜色面板&#xff0c;直接通过系统的…

用JSLint精炼提升JavaScript代码

由于移动应用的盛行和HTML5的广泛运用&#xff0c;JavaScript正越来越流行。JavaScript受欢迎的部分原因是因为它的灵活便捷&#xff0c;你可以快速上手&#xff0c;它不需要重量级的开发环境&#xff0c;也不需要第三方应用支持&#xff0c;只要你打开一个文本编辑器&#xff…

网页选项卡的应用

&#xff08;1&#xff09;功能描述&#xff1a; 在页面中&#xff0c;设置三个不同名称的选项卡&#xff0c;当单机某个选项卡时&#xff0c;下面相对应的区域显示其内容信息&#xff0c;同时选项卡的背景色与内容信息的背景色浑然一体&#xff0c;并且字体加粗&#xff0c;表…

工欲善其事必先利其器系列之:在VS里面折叠js代码

之前用vs写js的时候经常因为js代码过长而且不能像cs文件里面的方法一样进行折叠而抓狂,直到在扩展库发现了这款插件有了它就可以把代码进行折叠了 插件地址转载于:https://www.cnblogs.com/Chendaqian/p/3396702.html

python- 基础 map方法

python中map()函数 map()是 Python 内置的高阶函数&#xff0c;它接收一个函数 f 和一个 list&#xff0c;并通过把函数 f 依次作用在 list 的每个元素上&#xff0c;得到一个新的 list 并返回。 例如&#xff0c;对于list [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果希望把list的每个…