IOS语音通信原理

客户端代码是这样的。。。


#import "ViewController.h" 


@implementation ViewController 


-(void)aaa:(UIButton *)btn 

    NSString *method=[NSString stringWithFormat:@"login"]; 
    NSString *username=[NSString stringWithFormat:@"123"]; 
    NSString *password=[NSString stringWithFormat:@"123"]; 
    NSString *urlString= [NSString stringWithFormat:@"http://192.168.1.107:8080/ipTest/test.do?%@%@&%@%@&%@%@",@"method=",method,@"username=",username,@"password=",password]; 
   
    ASIFormDataRequest *requestForm = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:urlString]]; 
    //设置需要POST的数据,这里提交两个数据,A=a&B=b 
    //[requestForm setPostValue:@"a" forKey:@"A"]; 
    //[requestForm setPostValue:@"b" forKey:@"B"]; 
    [requestForm startSynchronous]; 
     
    //输入返回的信息 
    NSLog(@"response\n%@",[requestForm responseString]); 
    [requestForm release]; 



- (void)viewDidLoad 

    [super viewDidLoad]; 
    button1=[[UIButton alloc]initWithFrame:CGRectMake(200, 200, 50, 50)]; 
    button1.backgroundColor=[UIColor redColor]; 
    [self.view addSubview:button1]; 
    [button1 addTarget:self action:@selector(aaa:) forControlEvents:UIControlEventTouchUpInside]; 
// Do any additional setup after loading the view, typically from a nib. 





- (void)viewDidUnload 

    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 



@end 


客户端想要访问服务器 必须加上服务器的ip 服务端我是这样实现的。。。 
服务器是用java开发的 
public void doLogin(HttpServletRequest request,HttpServletResponse response) throws IOException{ 
  String username=request.getParameter("username"); 
  String password=request.getParameter("password"); 
  String getStr=request.getParameter("A"); 
  System.out.println("用户名:"+username+ "密码:"+password); 
  getAddr(request); 
  PrintWriter out=response.getWriter(); 
  String msg=null; 
  if(username!=null&&username.equals("123")&&password!=null &&password.equals("123")&& getStr!=null&&getStr.equals("a")){ 
   msg="登陆成功"; 
  } 
  else 
  { 
   msg="登陆失败"; 
  } 
  
  out.print(msg); 
  out.flush(); 
  out.close(); 
 } 










.....................................
Java 多客户端通信服务端代码分析 
[大] [中] [小] 发布人:圣才学习网  发布日期:2011-12-07 14:14  共180人浏览 
Java 多客户端通信在很多人看来是一项很繁琐的工作,其实我们在编写代码的时候只要是注意留心Java 多客户端通信的源代码就能发现,我们认为枯燥的东西其实都很简单。
来看服务端的代码:
1. import java.net.*;   
2. import java.io.*;   
3. import java.util.*;   
4. public class Jserver3 {   
5. private ServerSocket server;   
6. List sManager = new ArrayList();   
7. public Jserver3(){}   
8. void startServer() //运行服务器   
9. {   
10. try   
11. {   
12. server=new ServerSocket(719);   
13. System.out.println("服务器套接字已创建成功!");   
14. while(true)   
15. {   
16. Socket socket=server.accept();   
17. System.out.println("已经与客户端连接");   
18. new J_Thread(socket).start();   
19. sManager.add(socket);   
20. System.out.println("当前客户端连结数:"+sManager.size());   
21. }   
22. }catch(Exception e){}finally   
23. {   
24. try   
25. {   
26. server.close();   
27. }catch(Exception e){}   
28. }   
29. }   
30. public static void main(String[] args) {   
31. Jserver3 server=new Jserver3();   
32. server.startServer();   
33. }   
34. class J_Thread extends Thread//与客户端进行通信的线程类   
35. {   
36. Socket socket; //套接字引用变量   
37. private DataInputStream reader; //套接字输入流   
38. private DataOutputStream writer;  //套接字输出流   
39. J_Thread(Socket socket) //构造函数   
40. {   
41. this.socket=socket;   
42. }   
43. public void run()   
44. {   
45. try   
46. {   
47. reader=new DataInputStream(socket.getInputStream());//获取套接字的输入流   
48. writer=new DataOutputStream(socket.getOutputStream());//获取套接字的输出流   
49. String msg;   
50. while((msg=reader.readUTF())!=null)//如果收到客户端发来的数据   
51. {   
52. //向客户端发送信息   
53. writer.writeUTF("您的情书已经收到");   
54. writer.flush();   
55. System.out.println("来自客户端:"+msg);   
56. }   
57. }catch(Exception e){}finally   
58. {   
59. try   
60. {   
61. sManager.remove(socket);  //删除套接字   
62. //关闭输入输出流及套接字   
63. if(reader!=null)reader.close();   
64. if(writer!=null)writer.close();   
65. if(socket!=null)socket.close();   
66. reader=null;   
67. writer=null;   
68. socket=null;   
69. System.out.println("客户端离开");//向屏幕输出相关信息   
70. System.out.println("当前客户端的连接数:"+sManager.size());   
71. }catch(Exception e){}   
72. }   
73. }   
74. }   
75. }   
76. import java.net.*;  
77. import java.io.*;  
78. import java.util.*;  
79. public class Jserver3 {  
80. private ServerSocket server;  
81. List sManager = new ArrayList();  
82. public Jserver3(){}  
83. void startServer() //运行服务器  
84. {  
85. try  
86. {  
87. server=new ServerSocket(719);  
88. System.out.println("服务器套接字已创建成功!");  
89. while(true)  
90. {  
91. Socket socket=server.accept();  
92. System.out.println("已经与客户端连接");  
93. new J_Thread(socket).start();  
94. sManager.add(socket);  
95. System.out.println("当前客户端连结数:"+sManager.size());  
96. }  
97. }catch(Exception e){}finally  
98. {  
99. try  
100. {  
101. server.close();  
102. }catch(Exception e){}  
103. }  
104. }  
105. public static void main(String[] args) {  
106. Jserver3 server=new Jserver3();  
107. server.startServer();  
108. }  
109. class J_Thread extends Thread//与客户端进行通信的线程类  
110. {  
111. Socket socket; //套接字引用变量  
112. private DataInputStream reader; //套接字输入流  
113. private DataOutputStream writer;  //套接字输出流  
114. J_Thread(Socket socket) //构造函数  
115. {  
116. this.socket=socket;  
117. }  
118. public void run()  
119. {  
120. try  
121. {  
122. reader=new DataInputStream(socket.getInputStream());//获取套接字的输入流  
123. writer=new DataOutputStream(socket.getOutputStream());//获取套接字的输出流  
124. String msg;  
125. while((msg=reader.readUTF())!=null)//如果收到客户端发来的数据  
126. {  
127. //向客户端发送信息  
128. writer.writeUTF("您的情书已经收到");  
129. writer.flush();  
130. System.out.println("来自客户端:"+msg);  
131. }  
132. }catch(Exception e){}finally  
133. {  
134. try  
135. {  
136. sManager.remove(socket);  //删除套接字  
137. //关闭输入输出流及套接字  
138. if(reader!=null)reader.close();  
139. if(writer!=null)writer.close();  
140. if(socket!=null)socket.close();  
141. reader=null;  
142. writer=null;  
143. socket=null;  
144. System.out.println("客户端离开");//向屏幕输出相关信息  
145. System.out.println("当前客户端的连接数:"+sManager.size());  
146. }catch(Exception e){}  
147. }  
148. }  
149. }  
150. } 
嘎嘎 在这段代码里,服务端MM为每一个连接的客户端GG分配一个单独的线程,而每一个线程里都持有对应的客户端GG的Java 多客户端通信对象。SO,通过这些多线程,服务端MM就练就了一心N用的功力,可以同时接受N个客户端GG发来的情书了(,真的太贱了。。。。)
客户端的代码和上面的客户端代码一模一样的,这里就不多说啦!
来源:51CTO        作者:不详
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值