socket功能介绍的简单例子
来源:互联网 发布:数据分析ppt分享 编辑:程序博客网 时间:2024/06/06 12:50
通过Socket实现服务器鱼客户端的通讯。首先,要通过启动服务器的服务,客户端才能够通过端口号与服务器进行连接。例子引用了图灵机器人的API进行知道回复
客户段的实现代码:
public class MyClient extends JFrame implements ActionListener{
JTextArea jta;
JTextField jtf;
JButton jb;
JPanel jp;
Socket socket;
Scanner sc;
PrintWriter pw;
public MyClient(){
jta=new JTextArea();
jtf=new JTextField(15);
jb=new JButton("发送");
jp=new JPanel();
jp.add(jtf);
jp.add(jb);
JScrollPane jsp=new JScrollPane(jta);
this.add(jsp,BorderLayout.CENTER);
this.add(jp,BorderLayout.SOUTH);
jb.addActionListener(this);
jtf.addActionListener(this);
this.setTitle("客户端");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300,400);
this.setVisible(true);
try {
socket=new Socket("127.0.0.1",9000);
sc=new Scanner(socket.getInputStream());
pw=new PrintWriter(socket.getOutputStream(),true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
String str=sc.nextLine();
jta.append("图灵机器人:"+str+"\r\n");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyClient();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb||e.getSource()==jtf){
pw.println(jtf.getText());
jta.append("会飞的鱼:"+jtf.getText()+"\r\n");
jtf.setText("");
}
}
}
服务器端的代码:
public class Myserver extends JFrame implements ActionListener{
JTextArea jta;
JTextField jtf;
JLabel jl;
JButton jb;
JPanel jp;
ServerSocket ss;
Socket socket;
Scanner sc;
PrintWriter pw;
public Myserver(){
jta=new JTextArea();
jtf=new JTextField(15);
jb=new JButton("发送");
jp=new JPanel();
jl=new JLabel("自动回复");
jp.add(jl);
/*jp.add(jtf);
jp.add(jb);*/
JScrollPane jsp=new JScrollPane(jta);
this.add(jsp,BorderLayout.CENTER);
this.add(jp,BorderLayout.SOUTH);
jb.addActionListener(this);
jtf.addActionListener(this);
this.setTitle("服务器");
this.setSize(300,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
try {
ss=new ServerSocket(9000);
System.out.println("等待连接");
socket=ss.accept();
System.out.println("已连接");
sc=new Scanner(socket.getInputStream());
pw=new PrintWriter(socket.getOutputStream(),true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JButton jb;
while(true){
String str=sc.nextLine();
sentquestion(str);
jta.append("客户端:"+str+"\r\n");
try {
if(js.has("url")){
pw.println(js.getString("text")+" "+js.getString("url"));
jta.append("图灵小机器人:"+js.getString("text")+"\r\n"+js.getString("url")+"\r\n");
jtf.setText("");
}else{
pw.println(js.getString("text"));
jta.append("图灵小机器人:"+js.getString("text")+"\r\n");
jtf.setText("");
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void sentquestion(String str) {
// TODO Auto-generated method stub
String question=str;
String INFO;
try {
INFO = URLEncoder.encode(question, "utf-8");
answerQuestion(INFO);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
JSONObject js;
private void answerQuestion(String iNFO) {
// TODO Auto-generated method stub
String APIKEY = "API";
String getURL = "http://www.tuling123.com/openapi/api?key=" +APIKEY +"&info=" + iNFO;
String result;
try {
result = HttpUtils.doGet(getURL);
/*System.out.println(result);*/
js=new JSONObject(result);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new Myserver();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
/* if(e.getSource()==jb||e.getSource()==jtf){
pw.println(jtf.getText());
jta.append("服务器说"+jtf.getText()+"\r\n");
jtf.setText("");
}*/
}
}
- socket功能介绍的简单例子
- socket 简单介绍与例子
- Socket的简单介绍
- 非常简单的socket例子
- 一个简单的socket例子
- 一个简单socket的例子
- window socket的简单例子
- 一个简单的socket例子
- udp socket的简单例子
- 简单的java Socket 例子
- 简单实用的socket例子
- 简单的stream socket例子
- raw socket的简单介绍
- 【转】 Java Socket 简单介绍及例子(转)
- win32 socket的一个简单的例子
- win32 socket的两个简单的例子
- socket 连接服务器的简单例子
- 一个关于linux socket的简单例子
- 使用gradle构建Spring boot项目
- 传统机器学习算法包及使用
- LeetCode刷题【Array】 Missing Number
- 盒子模型关于嵌套关系、margin:0 auto与text-align区别
- 怎样动态更换APP图标
- socket功能介绍的简单例子
- 在Androidstudio上面开发Reactnative所需要的配置
- dpkg命令的详细使用教程
- maven项目报:Project configuration is not up-to-date with pom.xml. Run Maven->Update Project
- SpringMVC中使用Interceptor拦截器的使用
- Android使用intent调取导航或者地图
- 杭电ACM第1002题——A + B Problem II
- DiscreteScrollView
- 排序算法之希尔排序