网络编程是很重要的一门技术,如今的时代是一个网络的时代,网络编程也是非常重要的编程基础,网络编程涵盖的内容很多,需要熟悉socket、tcp/ip、加密解密、通信协议、高效通信,今天就完成一个小小的案例,通过socket实现网络编程,客户端和服务器端之间的通信问题,这在许多公司的工作要求和面试中都是必须的,希望这篇文章对您能有帮助,如果有帮助,欢迎您的关注:趣IT科技,每天持续分享。
通信模型
什么是socket?
socket又叫套接字是网络编程的核心,他通过操纵流的方式,来完成客户端和服务端的数据交换,以此来达到通信的目的,Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。在编程语言中java无疑是操作网络编程不错的语言,下面我们就通过java语言的方式来给大家演示基于socket的网络编程。
客户端代码
import java.io.*;
import java.net.*;
public class Client
{
Socket socket;
BufferedReader in;
PrintWriter out;
public static void main(String[] args)
{
new Client();//调用构造方法
}
public Client()//构造方法
{
try
{
socket = new Socket('localhost',8082);//localhost代表本机,端口8082
BufferedReader line = new BufferedReader(new
InputStreamReader(System.in));
out = new PrintWriter(socket.getOutputStream(),true);//获取输出流
out.println(line.readLine());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));//获取输入流
System.out.println(in.readLine());
out.close();//用完流之后关闭
in.close();
socket.close();
}catch(IOException e)
{
out.println('出现错误');
}
}
};
客户端代码
服务端代码
import java.net.*;
import java.io.*;
public class Server{
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server(){
try{
ss=new ServerSocket(8082);//这个端口需要和客户端的一致,不然连接不上
while(true)//while循环,来来回回的接受客户端,客户端可能不止一个
{
socket = ss.accept();//获取socket,他是一个堵塞程序
String IP = socket.getInetAddress().getHostAddress();//获取ip地址
String RemotePort = ':'+socket.getLocalPort();
System.out.println('连接成功'+IP+RemotePort);
in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
String line = in.readLine();//读取一行
System.out.println('客户端' + line);//输出客户端的数据
out = new PrintWriter(socket.getOutputStream(),true);
out.close();//关闭流
in.close();
socket.close();
}
}catch (IOException e){
out.println('错误');//异常出错
}
}
public static void main(String[] args)
{
new Server();
}
}
服务端代码
这些代码实现了什么?
这些分别是客户端和服务器端,运行服务端和客户端,客户端会放松数据给服务端,如果服务端能够正常接收并输出就表示连接正确,如果失败服务端会出异常,并将异常情况发送给客户端,表示连接失败。
网络编程有什么用?
下面是网络上一个找工作的自述:作为刚毕业的学生,我还是满腔热血的,希望可以在工作上搏一搏的,于是开始投简历。然后陆陆续续面试了3家,面试过程中都问到会不会网络编程,但是由于之前的工作项目都没有用到过网络编程,所以我都回答的是工作上没用过,但是学习过,了解过,于是就都悲剧了。面试官都以工作时间少,技术对于他们的岗位稍显薄弱为由婉拒了我。事实上许多公司对这些东西还是作为考核的标准的,所以如果你想找工作,建议还是把这方面的内容系统的学习一下,提升自己的核心竞争力。
结语:关注我们
每天都会持续分享有关计算机编程的知识,c语言,java,php,web方面的等等,如果你有兴趣就来关注我们吧,你的鼓励将是我们进步的最大动力,还等什么,欢迎关注趣IT科技吧,欢迎转发,收藏,和评论,喜欢你就点个赞。