javaSocket TCP服务器端建立步骤:
1.首先创建一个服务端口;
2.这个端口等待客户端的连接;socket.accept()这个函数会在接受到连接之前阻塞当前线程(处于监听连接的状态);
3.有连接后处理此次连接对象
4.结束处理时关闭连接的socket对象;
备注:为了服务程序能一直使用应该把监听写在死循环里面;
下面是具体代码1
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
public class Receive {
/** 服务启动函数 */
public static void start(){
ServerSocket serversocket = null;
Receive receive = new Receive();
try{
serversocket = new ServerSocket(receive.port);//首先创建一个服务端口
System.out.println("服务器端口号" + receive.port + "已启动....");
while(true){//这里建立死循环是让服务程序一直处于监听状态
try{
Socket socket = serversocket.accept();//等待客户端的连接
Thread serverthread = new ServerThread(socket);//连接之后建立新的线程单独处理此次连接
serverthread.setPriority(4);//设置该线程的优先级
serverthread.start();//线程启动
}catch(IOException e){
e.printStackTrace();//实际开发的时候这些异常应该打印到日志文件中
}
}
}catch(IOException e){
e.printStackTrace();
}finally{
if(serversocket != null){
try {
serversocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private final int port = 8001;
public static int personcount = 0;
public static void main(String[] args){
Receive.start();
}
}
javaSocket TCP服务器客户端建立步骤:
1.首先创建一个socket
2.调用socket的connect函数连接对应的服务器
3.连接成功后处理此次连接
4.结束处理时关闭连接的socket对象;
public class Client {
private int addr;//服务器地址
private int port;//服务器端口
private Socket socket = null;//连接成功后返回的socket对象
private OutputStream outputstream = null;//从socket中获取的输出流。。。。
private //这里还可以添加很多你想用的变量
//连接服务器
public boolean getconnect(int connTime,int readOrWriteTime)//传入连接超时时间和数据传输超时时间
boolean ret = false;
try{
socket = new Socket();//建立一个Socket
socket.connect(new InetSocketAddress(addr,port), connTime);//连接,设置连接请求超时时间
socket.setSoTimeout(readOrWriteTime);//设置读操作超时时间
}catch(IOException e){
e.printStackTrace();
}
finally{
try {
if(socket != null)socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
ret = true;return ret;
}
//发送字节报文
private void sendto(byte[] message) throws IOException{
OutputStream outs = socket.getOutputStream();
outs.write(message);
}
//接收字节报文
private byte[] receive(int byteLenght)throws IOException{
String ret = new String();
InputStream is =socket.getInputStream();
byte b[]=new byte[byteLenght];
is.read(b);
return b;
}
//在其他类里面调用你的这些函数,完成逻辑处理
//这里就分享一点点的思想希望对看的人有所启发,尽量让代码活跃起来,写到这里楼主打算去写个这样完整的功能类,之后再把他发表上来.