soket的概述-摘自百度:
所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。
首先是获取本地ip,我这里直接用代码获取本地ip了。
package Servertest;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIp {
public static void main(String[] args) {
InetAddress ip;
{
try {
ip = InetAddress.getLocalHost();
System.out.println(ip.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
}
接着是服务端的代码
package Servertest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
//服务器先接受客户端再反馈 所以先input再out写反馈
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(1000);
while(true)
{
Socket s = ss.accept();//如果客户端有os的时候s就会以ss来创建出对象
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String data = new String(bys, 0, len);//data为bys的内容
System.out.println("服务器的输出内容:" + data);
//给出反馈
OutputStream os = s.getOutputStream();
Scanner sc = new Scanner(System.in);
System.out.println("请输入服务器反馈出来的内容");
String strserver = sc.nextLine();
os.write(("这是服务器给出的反馈:" + strserver).getBytes());
}
}
}
以及客户端的代码
package Servertest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
//客户端先写入 后接受 所以先output 再input
public class Client {
public static void main(String[] args) throws IOException {
while(true)
{
Socket s = new Socket("127.00.00.1", 1000);
OutputStream os = s.getOutputStream();
Scanner sc = new Scanner(System.in);
System.out.println("请输入客户端要发送的消息:");
String strClient = sc.nextLine();
os.write(("这是客户端给出的消息:" + strClient).getBytes());
/*以上建立服务器的沟通和发送消息*/
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String data = new String(bys, 0, len);
System.out.println("客户端的输出:" + data);//接受消息
s.close();
}
}
}
127.00.00.1的话是默认的本地ip,可以不用获取ip就进行试用。
必须先启动服务端用于接收客户端数据,不然客户端就会报错。
技术暂时有限,还不懂怎么跨网进行通信。
为了能循环使用,就加了while,只要服务器不停止,就能一直循环调用。