1 20 50 150 500
欢迎来到莱福软件站,找素材,搜软件,就上莱福软件站!
当前位置 >首页 >软件下载 >电脑软件 >编程开发 >编程软件

java socket服务端

软件信息
  • 分类:编程软件
  • 大小:2KB
  • 语言: 中文
  • 环境: WinAll, WinXP
  • 更新:2024-11-13
  • 评级:
  • 系统: Windows Linux Mac Ubuntu
  • 软件类别: 国产软件 / 免费软件 / 编程辅助
  • 插件情况:
一对一的服务端和客户机:一个服务端只能同时服务一个客户端

服务端:

import java.io.*;
import java.net.*;

public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}
client.close();
}
}

accept()方法说明:
public Socket accept() throws IOException
Listens for a connection to be made to this socket and accepts it. The method blocks until a connection is made.
A new Socket s is created and, if there is a security manager, the security manager's checkAccept method is called with s.getInetAddress().getHostAddress() and s.getPort() as its arguments to ensure the operation is allowed. This could result in a SecurityException.

客户端

import java.net.*;
import java.io.*;

public class Client{
static Socket server;

public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
//标准输入
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));

while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}

一对多的服务端和客户机:一个服务端只能同时服务多个客户端,需要使用多线程来实现

服务端:调用具体的处理线程完成处理
import java.io.*;
import java.net.*;

public class MyMultiServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
while (true){
Socket client=server.accept();
ChildTh child=new ChildTh(client);//用socket实例初始化具体的处理线程对象
//使用Runnable接口和使用extends Thread的区别:
// 如果是使用Runnable接口,需要这么写:
new Thread(child).start();
//注意:不能写成:child.run();
// 如果使用extends Thread,只需要child.start()就可以,因为start()是Thread的方法
}
}
}

处理线程类:
import java.io.*;
import java.net.*;
public class ChildTh implements Runnable{
private Socket client;
public ChildTh(Socket client){
this.client=client;
}

public void run(){
try{
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}

client.close();
}catch(Exception e){
System.out.println("error in the close the socket!");
e.printStackTrace();
}
finally{

}
}

}

客户端:
import java.net.*;
import java.io.*;

public class Client{
static Socket server;

public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
//标准输入
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));

while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}

下载地址

热门软件

Top