关于TCP网络程序的问题寻求解决方法
发表在JavaWeb图书答疑 2009-10-22
是否精华
版块置顶:
关于TCP网络程序的问题


《从入门到精通》P328页光盘TM\sl\19\2,我在一部电脑上运行服务器端程序:
import java.io.*; //导入java.io包
import java.net.*; //导入java.net包
public class MyTcp { //创建类MyTcp
private BufferedReader reader; //创建BufferedReader对象
private ServerSocket server; //创建ServerSocket对象
private Socket socket; //创建Socket对象socket
void getserver() {
try {
server = new ServerSocket(2007); //实例化Socket对象
System.out.println("服务器套接字已经创建成功"); //输出信息
while (true) { //如果套接字是连接状态
System.out.println("等待客户机的连接"); //输出信息
socket = server.accept(); //实例化Socket对象
reader = new BufferedReader(new InputStreamReader(socket
.getInputStream())); //实例化BufferedReader对象
getClientMessage(); //调用getClientMessage()方法
}
} catch (Exception e) {
e.printStackTrace(); //输出异常信息
}
}
private void getClientMessage() {
try {
while (true) { //如果套接字是连接状态
System.out.println("客户机:" + reader.readLine()); //获得客户端信息
}
} catch (Exception e) {
e.printStackTrace(); //输出异常信息
}
try {
if (reader != null) {
reader.close(); //关闭流
}
if (socket != null) {
socket.close(); //关闭套接字
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) { //主方法
MyTcp tcp = new MyTcp(); //创建本类对象
tcp.getserver(); //调用方法
}
}
正常输出:服务器套接字已经创建成功
等待客户机的连接。
当在另一台电脑上运行客户端程序:P330页TM,sl。19,3
mport java.awt.*; //导入java.awt包
import java.awt.event.*; //导入java.awt.event包
import java.io.*; //导入java.io包
import java.net.*; //导入java.net包
import javax.swing.*; //导入java.swing包
public final class MyClien extends JFrame { //创建类继承JFrame类
private PrintWriter writer; //声明PrintWriter类对象
Socket socket; //声明Socket对象
private JTextArea ta = new JTextArea(); //创建JtextArea对象
private JTextField tf = new JTextField(); //创建JtextField对象
Container cc; //声明Container对象
public MyClien(String title) { //构造方法
super(title); //调用父类的构造方法
cc = this.getContentPane(); //实例化对象
cc.add(ta, "North"); //将文本域放在窗体的上部
cc.add(tf, "South"); //将文本框放在窗体的下部
tf.addActionListener(new ActionListener() { //绑定事件
public void actionPerformed(ActionEvent e) {
writer.println(tf.getText()); //将文本框中信息写入流
ta.append(tf.getText()); //将文本框中信息显示在文本域中
tf.setText(" "); //将文本框清空
}
});
}
private void connect() { //连接套接字方法
ta.append("尝试连接"); //文本域中信息信息
try { //捕捉异常
socket = new Socket("192.168.1.101",2007); //实例化Socket对象
writer = new PrintWriter(socket.getOutputStream(), true);
ta.append("完成连接"); //文本域中提示信息
} catch (Exception e) {
e.printStackTrace(); //输出异常信息
}
}
public static void main(String[] args) { //主方法
MyClien clien = new MyClien("向服务器送数据"); //创建本例对象
clien.setSize(200, 200); //设置窗体大小
clien.setVisible(true); //将窗体显示
clien.connect(); //调用连接方法
}
}

此行:public final class MyClien extends JFrame 亮起黄灯,提示:serializable类MyClien未声明类型为 long的静态终态serialVersionUID字段
请详细解释,程序运行正常的话在服务器端有:System.out.println("客户机:"+reader.readline());信息输出?我是用路由器上网,两机的IP都查了。端口号由原8998改为2007。
拜托了!
分享到:
精彩评论 1
绿草_mrkj
学分:0 LV1
2009-10-22
沙发
  用Eclipse的IDE环境中实现序列化,在Problems中会出现很多类似serialVersionUID的警告。其实serialVersionUID并不影响程序的运行。出现serialVersionUID警告可能也说明写的代码不是很规范。serialVersionUID用来说明类的不同版本间的兼容性。如果修改了该类,就需要修改此值(可以将其删除,再点击类前面的警告符号生成serialVersionUID值)。否则以前用老版本的类序列化的类恢复时会出错。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照