JAVA问题:用socket编写一个服务器端程序
服务端:
ServerSocket serverSocket = new ServerSocket(2008);
while (true) {
Socket socket = serverSocket.accept();
MyThread thread = 并扮new MyThread(socket);
thread.start();
}
public class MyThread extends Thread {
private Socket socket;
public MyThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
super.run();
try {
InputStream is = socket.getInputStream();
BufferedReader bufReader = new BufferedReader(new InputStreamReader(is));
String line = “”;
String s = “”;
while ((s = bufReader.readLine()) != null) {
line = line 卖脊+ s;
}
System.out.println(“接收中蔽渗到:” + line);
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端:
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket=new Socket(“192.168.0.101”, 2008);
OutputStream out=socket.getOutputStream();
PrintWriter pw=new PrintWriter(new OutputStreamWriter(out));
pw.print(“12345上山打老虎”);
pw.flush();
pw.close();
out.close();
}
java用socket写的服务器和客户端要如何测试啊?客户端的连接是的ip有什么是本机IP么?
你好,其实测试的时候就用本机地址127.0.0.1进行就可以了,服务器和客户端都用一个IP,但端口不同,一般服务器端是固定端口,而多个客户端用其他的多个端口进行连接。
当然春汪你想模拟更真实的效果,又没有多台机器,可以搭建虚拟悄森碧机,比如vmware,把客户端或服务启举器放到虚拟机里去。
java的客户端用的是Socket,服务器端用SocketChannel,这两种能实现通信么? 说得比较白,望理解
Socket 和ServerSocke 是一对 他们是java.net下面实现物肢socket通洞蚂绝信的类
SocketChannel 和ServerSocketChannel是一对 他们是java.nio下面实现通信的类 支持异步纳姿通信
服务器必须先建立ServerSocket或者ServerSocketChannel 来等待客户端的连接
客户端必须建立相对应的Socket或者SocketChannel来与服务器建立连接
服务器接受到客户端的连接受,再生成一个Socket或者SocketChannel与此客户端通信
不过Socket和SocketChannel可以通过 socket.channel() SocketChannel.socket() 方法相互转换
同理ServerSocket 和ServerSocketChannel 也可以相互转换
用java socket实现一个服务器对多个客户端的文件传输
通过socket可以用如枝兆下方式进行。
1.启动服猛旦租务端代码。
2.启动客户迟谨端自动连接服务端。
3.服务端上传文件,保存文件和路径。
4.将路径发送给连接服务端的客户端。
小白求教,关于JAVA socket客户端 和服务端的通信
1、客氏扮户端连接一般是与用户绑定的,无用户数据的socket就算能区分连接也毫无意义。一般做法是客户端利用HTTP登录,登录服务器分析各个socket服务器的负载后发送给客户端应该连接哪个socket服务器,客户端拿到登录成功后的用户ID后再连接socket服务器,此用户ID就可以用于socket服务器区分客户端连接。
2、如果自建socket服务器,建议最好不用SSH、SSM之类的框架,可控性更高,更加轻量,但工作坦卖量稍显繁多,且复杂;建议使用Netty做scoket基础框架。
3、歼信灶客户端服务端通信可以用json格式的文本行(字符流,以\r\n自动做粘包断包解码),还有自定义数据格式的字节流(比如 数据包内容长度+数据包内容,以数据包内容长度手动编写代码做粘包断包解码),还可以用时下流行的protobuf。