import java.io.DataInputStream
import java.io.InputStreamReader
import java.io.OutputStream
import java.io.DataOutputStream
import java.io.BufferedReader
import java.net.ServerSocket
import java.net.Socket
import java.io.IOException
import java.util.Date
class Server
{
public Server()
{
try
{
ServerSocket s=new ServerSocket(8888)
Socket ss=s.accept()
OutputStream out=ss.getOutputStream()
DataOutputStream dout=new DataOutputStream(out)
InputStream in=ss.getInputStream()
DataInputStream din=new DataInputStream(in)
System.out.print(din.readUTF()+"棚昌!")
dout.writeUTF("你已经连接到服务器"+"\t"+"谈和坦你的地址:"+ss.getInetAddress()+"\t"
+"你的链接端口:"+ss.getLocalPort()+"\n")
new ReadMessage(din).start()
new SendMessage(dout).start()
}
catch (IOException e)
{
e.printStackTrace()
}
}
public static void main(String[] args)
{
new Server()
}
}
//接受客户端信息
class ReadMessage extends Thread
{
private DataInputStream din
public ReadMessage(DataInputStream din)
{
this.din=din
}
public void run()
{
String str
try
{
while (true)
{
str=din.readUTF()
System.out.println(new Date().toLocaleString()+"客户端说:"+str)
if (str.equals("bye"))
{
System.out.println("客户端下线!")
break
}
}
}
catch (IOException e)
{
e.printStackTrace()
}
}
}
// 发出服务器信息
class SendMessage extends Thread
{
private DataOutputStream dout
public SendMessage(DataOutputStream dout)
{
this.dout=dout
}
public void run()
{
InputStreamReader inr=new InputStreamReader(System.in)
BufferedReader buf=new BufferedReader(inr)
String str
try
{
while(true)
{
str=buf.readLine()
dout.writeUTF(str)
if (str.equals("bye"含桐))
{
System.out.println("服务器退出!")
System.exit(1)
}
}
}
catch (IOException e)
{
e.printStackTrace()
}
}
}
import java.io.InputStream
import java.io.DataInputStream
import java.io.InputStreamReader
import java.io.OutputStream
import java.io.DataOutputStream
import java.io.BufferedReader
import java.net.Socket
import java.io.IOException
import java.util.Date
class Client
{
public Client()
{
try
{
Socket s=new Socket("192.168.1.2",8888)
InputStream in=s.getInputStream()
DataInputStream din=new DataInputStream(in)
OutputStream out=s.getOutputStream()
DataOutputStream dout=new DataOutputStream(out)
dout.writeUTF("服务器你好!我是客户端")
System.out.println(din.readUTF())
new Thread(new SenderMessage(dout)).start()
new Thread(new ReaderMessage(din)).start()
}
catch (IOException e)
{
e.printStackTrace()
}
}
public static void main(String[] args)
{
new Client()
}
}
class ReaderMessage implements Runnable
{
private DataInputStream din
public ReaderMessage(DataInputStream din)
{
this.din=din
}
public void run()
{
String str
try
{
while(true)
{
str=din.readUTF()
System.out.println(new Date().toLocaleString()+"服务器说:"+str)
if (str.equals("bye"))
{
System.out.println("服务器已经关闭,此程序自动退出!")
break
}
}
}
catch (IOException e)
{
e.printStackTrace()
}
}
}
class SenderMessage implements Runnable
{
private DataOutputStream dout
public SenderMessage(DataOutputStream dout)
{
this.dout=dout
}
public void run()
{
String str
InputStreamReader inf=new InputStreamReader(System.in)
BufferedReader buf=new BufferedReader(inf)
try
{
while (true)
{
str=buf.readLine()
dout.writeUTF(str)
if (str.equals("bye"))
{
System.out.println("客户端自己退出!")
System.exit(1)
}
}
}
catch (IOException e)
{
e.printStackTrace()
}
}
}
单线程的import java.net.*
public class UDP
{
public static void main(String args[])
{
for (int port=0port<=65535port++) {
try {
DatagramSocket server=new DatagramSocket(port)
server.close()
}
catch(SocketException e) {
System.out.println("穗毕UDP端口"+port+"开放!")
}
}
}
}
希望能够帮助到你猜早芹,望睁慎采纳!
三个问题一个答案,什么都不会发生原因:tcp、udp server程序无非是绑定了一个特定的端口,但是client端使用的端口都是随机产生的,没人说client 和server 的tcp和udp端口必须一喊烂致哦
建议你去了解下tcp ip的运作机制销配,就比较容郑斗漏易理解了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)