Java 简单的 socket 编程入门实战
这个是给女朋友写的:)
首先需要知道我们每个电脑都可以成为server(服务器) 和 client(客户端)
我们需要使用java来实现客户端与服务器的数据传输
先帖上代码
注意这里两张代码处于两个java project 中,因为我们实际上情况上是两台电脑来运行,但是由于演示方便这里就本机既充当
客户端也充当服务器。。。。。
服务端::
package net; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class Server { public Server()
{
try {
// conn为connection的缩写;ServerSocket服务器端口
// 后面ServerSocket(1234)里面的1234为端口号,要大于 1024小于65535. 0~1024为系统预留的端口号,总共一共有65535个端口号
ServerSocket ss = new ServerSocket(1234); // 服务器新建一个端口,端口号为1234
System.out.println("成功启动服务器,等待客户端连接!!!!!!!"); Socket tcpConn = ss.accept(); // 接收客户端的链接
// tcpConn.getInetAddress()获取连入服务器的客户端的ip地址; tcpConn.getPort()获取连入服务器的客户端的端口号
System.out.println("收到客户端连接,来自:" + tcpConn.getInetAddress() + ":" + tcpConn.getPort()); // 读取客户端给服务器的东西,并且返回东西给客户端
InputStream in = tcpConn.getInputStream(); // 获取数据
Scanner netIn = new Scanner(in); // 用这个方法可以获取客户端传过来的数据,但不是很好。接收传过来的东西
OutputStream out = tcpConn.getOutputStream(); String receiveStr = netIn.nextLine(); // 读取客户端给服务器的东西,存在变量里面
System.out.println("收到来自客户端得数据:" + receiveStr); String returnStr = "0.0" + receiveStr + "\n"; // 后面加了一个\n是为了配合Scanner方法
out.write(returnStr.getBytes()); // 将这个东西返回到客户端
System.out.println("返回给客户端的数据:" + returnStr); // 全部关闭
in.close();
out.close(); tcpConn.close(); ss.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* @param args
*/
public static void main(String[] args) {
new Server(); } }
客户端::
package net; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner; public class Client { public Client()
{
try {
// new一个端口出来,前面的"127.0.0.1"为本机的ip地址,后面的1234为需要连接的服务器的端口号
Socket tcpConn = new Socket("127.0.0.1",1234);
System.out.println("成功连接到服务器!!!!!!!"); // 向服务器发送东西,并且接受服务器的返回
InputStream in = tcpConn.getInputStream();
OutputStream out = tcpConn.getOutputStream();
Scanner netIn = new Scanner(in); // 这个是为了接收传过来的东西 System.out.println("请输入要发送给服务器的数据:");
Scanner keyIn = new Scanner(System.in);// 读取键盘输入
String str = keyIn.nextLine() + "\n"; // 读取键盘输入,赋值给字符串
out.write(str.getBytes());//写入流操作必须是字节类型写入 String returnStr = netIn.nextLine(); // 接收服务器传过来的东西,赋值给一个字符串
System.out.println("接收到来自服务器的返回数据:" + returnStr); in.close();
out.close(); tcpConn.close(); } catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* @param args
*/
public static void main(String[] args) {
new Client(); } }
注意运行时,用编译器ide运行是不行的,因为编译器无法同时运行两个主函数
所以我们需要使用控制台cmd来操作两个项目
————————如何使用cmd的方法当然也有哦::点击进入查看如何使用cmd运行java
执行结果如下:
服务器
客户端
以上谢谢学习!!!
Java 简单的 socket 编程入门实战的更多相关文章
- 读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 读懂Java中的Socket编程(转)
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- java中的socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 最基础的Python的socket编程入门教程
最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在 ...
- java基础之Socket编程概述以及简单案例
概述: 用来实现网络互连的 不同的计算机上 运行的程序间 可以进行数据交互 也就是用来在不同的电脑间, 进行数据传输. 三大要素: IP地址: 设备(电脑,手机,ipad)在网络中的唯一标识. 组成 ...
- Socket编程入门
socket基本知识 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(AP ...
- 一个项目看java TCP/IP Socket编程
前一段时间刚做了个java程序和网络上多台机器的c程序通讯的项目,遵循的是TCP/IP协议,用到了java的Socket编程.网络通讯是java的强项,用TCP/IP协议可以方便的和网络上的其他程序互 ...
- java.net.Socket/java.net.ServerSocket-TCP Socket编程
TCP 的 Java 支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP 协议族有 IP 协议.TCP 协议和 ...
- python socket编程入门(编写server实例)+send 与sendall的区别与使用方法
python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...
随机推荐
- tomcat抬头有“选择”或“选定”,导致tomcat无法运行问题
2. 遇到tomcat抬头有"选择"或"选定",导致tomcat无法运行问题 解决:在tomcat抬头右键--属性,去掉"快速编辑模式"勾选 ...
- 关于MATLAB处理大数据坐标文件201761
前几天备战考试,接下来的日子将会继续攻克大数据比赛 虽然停止了一段时间没有提交数据,但是这几天的收获还是有的,对Python 随机森林了解的更了解了 随机森林是由多课决策树组成(当然这个虽然我们初学者 ...
- 不带插件 ,自己写js,实现批量上传文件及进度显示
今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是 ...
- 使用CoApp创建NuGet C++静态库包
NuGet是微软开发平台下的包管理软件,使用它你可以非常方便的将一些第三方的库.框架整合进自己的项目中,省去了不少麻烦的配置过程.但是从官方文档上来看,貌似NuGet对C++的支持不是很好,并且在现阶 ...
- 提高驾驶技术:用GAN去除(爱情)动作片中的马赛克和衣服
同步自我的知乎专栏:https://zhuanlan.zhihu.com/p/27199954 作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章.这篇就介绍利用生成式对抗网络(GAN)的两个基 ...
- 前端UI组件复用工具
"懒"是第一生产力. 代码复用总是程序员喜闻乐见的,前端组件化的最终目的就是复用,今天我们就将深入探讨如何实现UI组件的复用. 通常我们所说的组件往往是包含业务逻辑的前端组件,而这 ...
- 1、AngularJS 验证
1.formName.inputFieldName.property($pristine(未修改).$dirty(修改过的).$valid(合法).$invalid(非法).$error(当前表单所有 ...
- CSS(3)实现水平垂直居中效果
CSS实现水平垂直居中对齐 在CSS中实现水平居中,会比较简单.常见的,如果想实现inline元素或者inline-block元素水平居中,可以在其父级块级元素上设置text-align: cente ...
- linux开机启动smb服务
修改/etc/rc.local文件(增加红色部分) [root@localhost ~]# cat /etc/rc.local #!/bin/sh## This script will be exec ...
- 执行3小时超长SQL的分析优化过程:从索引遇见IS NULL,到最佳实践
月底高峰期,对一个典型项目抽查分析时,发现了一个超级慢.全表扫描的SQL,语句很简单,AWR中赫然在列,在我统计的截止时间内还没有结束... 使用v$active_session_history进一步 ...