JAVA soket通信

本文提供了一组Java网络编程的基本示例,包括服务端和客户端代码。服务端监听10086端口并接收客户端消息,客户端则连接到该端口发送消息,并接收来自服务端的响应。

服务端代码

import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.*;
import java.text.*;


public class server
{
private static String getInputMsg( Socket s )
{
String inStr = "";
if(s == null)
return inStr;


try{
InputStream in = s.getInputStream();
byte[] inStrBuff = new byte[1024];
in.read(inStrBuff);
inStr = new String(inStrBuff);
}
catch(IOException e)
   {
       e.printStackTrace();
   }
return inStr.trim();
}


private static void sendOutputMsg(Socket s, String msg)
{
if( s == null || msg == "" )
return;


try{
OutputStream out = s.getOutputStream();
out.write( msg.getBytes() );
out.flush();
}
catch(IOException e)
   {
       e.printStackTrace();
   }
}


private static String getCurrentTime()
{
//get now time string
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat ("yyyyMMddhhmmss");
String nowTime = new String(ft.format(dNow));
return nowTime;
}


public static void main(String [] args)
{
try{
//listen at port 10086
ServerSocket serverSocket = new ServerSocket(10086);
System.out.println( "start listen at port 10086" );


while(true)
{
//accept
Socket server = serverSocket.accept();


//print client message
String clientMsg = getInputMsg(server);
System.out.println( "data from client => " + clientMsg );


//create response data send to client
System.out.println("client data length = " + clientMsg.length());
String msg = "$ST$" + getCurrentTime() + "0000" + "RECE" + "0000" + "$ED$";
sendOutputMsg(server, msg);
}



}catch(IOException e)
      {
         e.printStackTrace();
      }
}
}


客户端代码

import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.*;
import java.text.*;


public class client
{

private static String getInputMsg( Socket s )
{
String inStr = "";
if(s == null)
return inStr;


try{
InputStream in = s.getInputStream();
byte[] inStrBuff = new byte[1024];
in.read(inStrBuff);
inStr = new String(inStrBuff);
}
catch(IOException e)
   {
       e.printStackTrace();
   }
return inStr.trim();
}


private static void sendOutputMsg(Socket s, String msg)
{
if( s == null || msg == "" )
return;


try{
OutputStream out = s.getOutputStream();
out.write( msg.getBytes() );
out.flush();
}
catch(IOException e)
   {
       e.printStackTrace();
   }


}


private static String getCurrentTime()
{
//get now time string
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat ("yyyyMMddhhmmss");
String nowTime = new String(ft.format(dNow));
return nowTime;
}


public static void main(String [] args)
{
try{
Socket client = new Socket("127.0.0.1",10086);
//send message to server
String msg = "$ST$" + getCurrentTime() + "0000" + "STAT" + "0000" + "$ED$";
sendOutputMsg(client, msg);


//print server message
String serverMsg = getInputMsg(client);
System.out.println("server data length = " + serverMsg.length());
System.out.println( "data from server => " + serverMsg );


}
catch(IOException e)
        {
        e.printStackTrace();
        }
}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值