概述
1.Java网络编程——建立Socket连接
基于Tcp协议的编程:
服务端和客户端
服务端:创建ServerSocket对象,绑定要监听的端口。
客户端:创建Socket(网络套接字),给出要访问的服务端ip,以及端口号port。
下面给出一段代码演示
服务端代码示例
package server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Mysever {
public static void main(String[] args) throws IOException {
//建立服务端对象,绑定4574端口。
ServerSocket serv =new ServerSocket(4574);
System.out.println("服务器启动成功,等待用户接入");
//accept()等待用户接入,如果没有用户连接,会一直等待。
//有客户连接后,accept()方法会返回一个Socket对象,代表客户端
Socket sc=serv.accept();
System.out.println("有客户端接入,客户端ip:"+sc.getInetAddress());
}
}
客户端代码示例
package server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Mysever {
public static void main(String[] args) throws IOException {
//建立服务端对象,绑定4574端口。
ServerSocket serv =new ServerSocket(4574);
System.out.println("服务器启动成功,等待用户接入");
//accept()等待用户接入,如果没有用户连接,会一直等待。
//有客户连接后,accept()方法会返回一个Socket对象,代表客户端
Socket sc=serv.accept();
System.out.println("有客户端接入,客户端ip:"+sc.getInetAddress());
}
}
先运行服务端代码,再运行客户端代码。
运行服务端(客户端还未运行)
服务器启动成功,等待用户接入
运行客户端
服务器启动成功,等待用户接入
有客户端接入,客户端ip:/192.168.0.104
切换到服务端控制窗口
服务端结果
服务器启动成功,等待用户接入
有客户端接入,客户端ip:/192.168.0.104
2.Socket基本流数据传输(客户端和服务端进行数据传输的基本操作)
getInputStream():返回网络输入流InputStream,可以接收来自网络的数据
getOutputStream():返回值为网络输出流 OutputStream,可以将数据发送到网络上
write(byte[]):写
read(byte[]):读
服务端代码
package server;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Mysever {
public static void main(String[] args) throws IOException {
//建立服务端对象,绑定4574端口。
ServerSocket serv =new ServerSocket(4574);
System.out.println("服务器启动成功,等待用户接入");
//accept()等待用户接入,如果没有用户连接,会一直等待。
//有客户连接后,accept()方法会返回一个Socket对象,代表客户端
Socket sc=serv.accept();
System.out.println("有客户端接入,客户端ip:"+sc.getInetAddress());
//从Socket中得到网络输入流,接收来自网络的数据
InputStream in=sc.getInputStream();
//从Socket中得到网络输出流,将数据发送到网络上
OutputStream out=sc.getOutputStream();
//接收客户端发来的数据
byte[] bs=new byte[1024];
//将数据存入bs数组中,返回值为数组的长度
int len=in.read(bs);
String str=new String(bs,0,len);
System.out.println("来自客户端的消息: "+str);
//向客户端写数据,注意客户端代码中别忘记写read()方法,否则会抛异常
out.write("欢迎访问,你好,我是服务端".getBytes());
System.out.println("服务端正常结束");
//关闭流!
sc.close();
}
}
客户端代码
package cli;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 下面编写客户端,此时,不需要关心客户端地址。
* 只需要关心服务端ip地址,这样才能连接服务器。
* 服务端的端口号也需要知道。
*
*/
public class MyClient {
public static void main(String[] args) throws UnknownHostException, IOException {
//建立Socket连接,new Socket(服务端ip,端口port);
Socket so=new Socket("192.168.0.104",4574);
System.out.println("连接服务器成功");
//从Socket中得到网络输入流,接收来自网络的数据
InputStream in=so.getInputStream();
//从Socket中得到网络输出流,将数据发送到网络上
OutputStream out=so.getOutputStream();
//write方法中只能为byte[],或者int。
//若服务端没有read(),则客户端会一直等。即停留在write方法中。
out.write("你好,我是客户端".getBytes());
//接收服务端发来的数据
byte[] bs=new byte[1024];
//将数据存入bs数组中,返回值为数组的长度
int len=in.read(bs);
String str=new String(bs,0,len);
System.out.println("来自服务端的消息: "+str);
//关闭流
so.close();
}
}
客户端运行结果
连接服务器成功
来自服务端的消息: 欢迎访问,你好,我是服务端
服务端运行结果
服务器启动成功,等待用户接入
有客户端接入,客户端ip:/192.168.0.104
来自客户端的消息: 你好,我是客户端
服务端正常结束
最后
以上就是明理烧鹅为你收集整理的Java网络编程TCP 、建立Socket连接,客户端和服务端基本数据传输的全部内容,希望文章能够帮你解决Java网络编程TCP 、建立Socket连接,客户端和服务端基本数据传输所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复