刚才看了下以前写了的代码,tcp通信,发现太简单了,直接又摘抄了一个,运行
博客:http://blog.csdn.net/zhy_cheng/article/details/7819659
优点是服务器循环检测,客户端间歇性发送,缺点是代码杂糅在一块,不太容易看懂,大概明白它是通过方法重载实现的:
服务器代码:
建立ServiceSocket.java,ServiceSocket代码:
package com.swust.udp; import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; public class ServiceSocket extends Thread{ public Socket sock;
public ServiceSocket(Socket sock)
{
this.sock=sock;
} public void run()
{
try{
OutputStream os=sock.getOutputStream();
InputStream is=sock.getInputStream();
os.write("Hello这里是来自服务器的消息".getBytes());
byte []buf=new byte[100];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
os.close();
is.close();
sock.close();
}
catch(Exception e)
{ }
}
public static void main(String[] args) {
// TODO Auto-generated method stub try {
ServerSocket ss=new ServerSocket(6000); //循环扫描,没有关闭:ss.close();
while(true)
{
Socket s=ss.accept(); new ServiceSocket(s).start();
} } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
客户端代码:
建立ClientSocket.java,ClientSocket代码:
package com.swust.udp; import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket; public class ClientSocket { public static void main(String []args)
{
try {
Socket s=new Socket(InetAddress.getByName(null),6000);//"localhost" "127.0.0.1s"
OutputStream os=s.getOutputStream();
InputStream is=s.getInputStream();
byte []buf=new byte[100];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
os.write("Hello,我是客户端的消息".getBytes());
Thread.sleep(100);
os.close();
is.close();
s.close(); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }