「tcpjava编程」java tcp socket编程
本篇文章给大家谈谈tcpjava编程,以及java tcp socket编程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、使用Java网络编程编写SIP消息的收发,TCP和UDP有什么区别?
- 2、JAVA TCP通信,客户端给服务器传送JAVA对象通信出错了,求各位大神指教
- 3、java方面的, 应用TCP编程, 完成一个多线程版的服务端 ,当Client访问时 ,返回当前访问的时间。。求编码
- 4、我要一份用java网络编程写的点对点的两人聊天程序(TCP和UDP)?
- 5、java 网络编程中 tcp连接问题。 例如编写聊天室 , c/s结构的c和s端都是不间断实现请求--响应 。
使用Java网络编程编写SIP消息的收发,TCP和UDP有什么区别?
目前通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。
JAVA TCP通信,客户端给服务器传送JAVA对象通信出错了,求各位大神指教
在java中用socket传输对象的时候,底层是把java对象序列化,然后以二进制数据进行传输的。socket的服务端和客户端都需要有这个对象的声明,比如客户端发送的是com.client.MsgPackage对象,那么这个对象的class文件必须在服务端的classpath中。否则就会是接收方接收了tcp的数据包,但是无法还原成对象。
底层要能把对象序列化,这个对象要实现一个可序列化的接口:java.io.Serializable。
类通过实现 java.io.Serializable
接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。
writeObject 方法负责写入特定类的对象的状态,以便相应的 readObject 方法可以恢复它。通过调用
out.defaultWriteObject 可以调用保存 Object 的字段的默认机制。该方法本身不需要涉及属于其超类或子类的状态。通过使用
writeObject 方法或使用 DataOutput 支持的用于基本数据类型的方法将各个字段写入 ObjectOutputStream,状态可以被保存。
readObject 方法负责从流中读取并恢复类字段。它可以调用 in.defaultReadObject
来调用默认机制,以恢复对象的非静态和非瞬态字段。defaultReadObject
方法使用流中的信息来分配流中通过当前对象中相应指定字段保存的对象的字段。这用于处理类演化后需要添加新字段的情形。该方法本身不需要涉及属于其超类或子类的状态。通过使用
writeObject 方法或使用 DataOutput 支持的用于基本数据类型的方法将各个字段写入 ObjectOutputStream,状态可以被保存。
java方面的, 应用TCP编程, 完成一个多线程版的服务端 ,当Client访问时 ,返回当前访问的时间。。求编码
这个需要多线程么?把服务端搞成常驻内存的就好了吧。比如while。下面是我刚给你写的测试代码,仅供参考:
客户端:
static Socket server;
public static void main(String[] args) throws Exception {
InetAddress address = InetAddress.getByName("134.132.207.228");
server = new Socket(address, 4567);
PrintWriter out = new PrintWriter(server.getOutputStream());
String str = "发送内容";
System.out.println("client send:"+str);
out.println(str);
out.flush();
BufferedReader wt = new BufferedReader(new InputStreamReader(server.getInputStream()));
str = wt.readLine();
System.out.println("client receive:"+str);
wt.close();
out.close();
server.close();
}
服务端:
static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(4567);
while(true){
Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String str = in.readLine();
System.out.println("server receive:"+str);
PrintWriter out = new PrintWriter(client.getOutputStream());
str = "来自服务器:"+getCurrentDateTimeStr();
out.println(str);
out.flush();
System.out.println(str);
out.close();
in.close();
client.close();
}
}
public static String getCurrentDateTimeStr(){
Calendar cal = Calendar.getInstance();
return getFormatedTime(cal.getTime());
}
public static String getFormatedTime(Date date) {
return dateFormat.format(date);
}
我要一份用java网络编程写的点对点的两人聊天程序(TCP和UDP)?
Server端:
import java.io.*;
import java.net.*;
import java.applet.Applet;
public class TalkServer{
public static void main(String args[]) {
try{
ServerSocket server=null;
try{
server=new ServerSocket(4700);
}catch(Exception e) {
System.out.println("can not listen to:"+e);
}
Socket socket=null;
try{
socket=server.accept();
}catch(Exception e) {
System.out.println("Error."+e);
}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter os=new PrintWriter(socket.getOutputStream());
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client:"+is.readLine());
line=sin.readLine();
while(!line.equals("bye")){
os.println(line);
os.flush();
System.out.println("Server:"+line);
System.out.println("Client:"+is.readLine());
line=sin.readLine();
}
os.close();
is.close();
socket.close();
server.close();
}catch(Exception e){
System.out.println("Error:"+e);
}
}
}
Client端:
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String args[]) {
try{
Socket socket=new Socket("127.0.0.1",4700);
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
PrintWriter os=new PrintWriter(socket.getOutputStream());
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline;
readline=sin.readLine(); //从系统标准输入读入一字符串
while(!readline.equals("bye")){
os.println(readline);
os.flush();
System.out.println("Client:"+readline);
System.out.println("Server:"+is.readLine());
readline=sin.readLine(); //从系统标准输入读入一字符串
}
os.close(); //关闭Socket输出流
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
}catch(Exception e) {
System.out.println("Error"+e); //出错,则打印出错信息
}
}
}
java 网络编程中 tcp连接问题。 例如编写聊天室 , c/s结构的c和s端都是不间断实现请求--响应 。
你的意思我差不多明白了,现在我跟你说下那个两个人猜拳的一个思路
服务端是可以查看客户端连接情况的
你可以在客户端弄一个Map 用服务端的IP 作为键 , 发送的消息作为值存放
客户端发送消息后就存放在Map里面
当服务端接收到两边客户端都有传入消息,就根据IP 取出值来比较
然后将结果返回给客户端
其实那个多人聊天,需要所有人发言后才会公布广播的,也可以按照这个思路去做
tcpjava编程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java tcp socket编程、tcpjava编程的信息别忘了在本站进行查找喔。
发布于:2022-12-27,除非注明,否则均为
原创文章,转载请注明出处。