关于Socket的问题:

liverpoolfc 2003-06-09 09:50:59
关于Socket的问题:
我是Socket的初学者,请教有关Socket的简单问题,请不要见笑

1是不是一定要在客户端建立Socket并在服务器端建立ServerSocket,那么才能在客户端和服务器之间建立Socket?
2 以下是我按书写的建立Socket代码:
import java.net.*;
import java.io.*;

public class Socket {
public static void main(String args[]){
Socket clientSocket=null;

try{
clientSocket=new Socket("127.0.0.1,1800");
}
catch(Exception e){ e.printStackTrace();
}

}
}

但编译出错:Socket.java:9: cannot resolve symbol
symbol : constructor Socket (java.lang.String)
location: class Socket
clientSocket=new Socket("127.0.0.1,1800");
^
1 error
请问是什么原因,请举一个建立Socket通信的例子给我。

3 建立Sokcet的端口号是不是一定要大于1023?


...全文
49 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
caoze 2003-06-10
  • 打赏
  • 举报
回复
// ClientSocketSample.java

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

public class ClientSocketSample
{
public static final String host = "192.168.1.219";
public static final int port = 23711;
public ClientSocketSample()
{
super();
}

public void testEcho()
{
try
{
Socket clientS = new Socket(host,port);
PrintWriter output = new PrintWriter(clientS.getOutputStream(),true);
BufferedReader reader = new BufferedReader(new InputStreamReader(clientS.getInputStream()));
// output.write("Hello");
output.println("Hello");
System.out.println("Server:" + reader.readLine());
output.close();
reader.close();
clientS.close();
}
catch(UnknownHostException ex)
{
ex.printStackTrace();
}
catch(IOException ex)
{
ex.printStackTrace();
}


}

public static void main(String[] args)
{
ClientSocketSample clientSocketSample1 = new ClientSocketSample();
clientSocketSample1.testEcho();
}
}
caoze 2003-06-10
  • 打赏
  • 举报
回复
// ServerSocketSample.java

import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.JFrame;
import java.awt.event.*;
import java.awt.*;

public class ServerSocketSample extends JFrame implements ActionListener,Runnable
{
public final int port = 23711;
private ServerSocket serversocket = null;
private JTextArea txt = null;
private static ServerSocketSample serverSocketSample1 = null;
private JButton btn_accept = null;
private JButton btn_stop = null;
private boolean socket_closed = true;
public ServerSocketSample()
{
super();
addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);

JPanel jp = new JPanel();
btn_accept = new JButton("Accept");
btn_accept.addActionListener(this);
jp.add(btn_accept);
btn_stop = new JButton("Stop");
btn_stop.addActionListener(this);
btn_stop.setEnabled(false);
jp.add(btn_stop);
getContentPane().add(jp,BorderLayout.NORTH);
txt = new JTextArea();
txt.setEditable(false);
txt.setLineWrap(true);
JScrollPane jsp = new JScrollPane(txt);

getContentPane().add(jsp);
txt.setTabSize(4);
setSize(400,400);
setVisible(true);
}

public void run()
{
try
{
while(!socket_closed)
{
Socket ClientSocket = serversocket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(ClientSocket.getInputStream()));
String msg = reader.readLine();
txt.append(msg);
PrintWriter output = new PrintWriter(ClientSocket.getOutputStream(),true);
output.println("服务器:" + msg + "\n\r");
reader.close();
output.close();
ClientSocket.close();
}
}
catch(IOException ex)
{ex.printStackTrace();}
}

public void actionPerformed(ActionEvent e)
{
Thread LocalThread = new Thread(serverSocketSample1,"ServerSocketSample");
if(e.getActionCommand() == "Accept")
{
try { serversocket = new ServerSocket(port); }
catch(IOException ex) { ex.printStackTrace(); }

socket_closed = false;
LocalThread.start();
txt.append("开始监听……\n");
btn_accept.setEnabled(false);
btn_stop.setEnabled(true);
}
else
{
socket_closed = true;
try { serversocket.close(); }
catch(IOException ex) { ex.printStackTrace(); }

txt.append("停止监听……\n");

btn_accept.setEnabled(true);
btn_stop.setEnabled(false);
}
}

public static void main(String[] args)
{
serverSocketSample1 = new ServerSocketSample();
}

}
caoze 2003-06-10
  • 打赏
  • 举报
回复
如楼上所言。
littlecpu 2003-06-10
  • 打赏
  • 举报
回复
1 服务端不一定是java的server socket,可以用c, vb, delphi等做出serversocket
2 new Socket("127.0.0.1,1800"); >>> new Socket("127.0.0.1", 1800);
3 不是的,比如你可以连 www.163.com 的80端口,你能读到一个网易的首页

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧